@font-face{font-family:DM Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/heartwood-0.ttf)format("truetype")}@font-face{font-family:DM Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/heartwood-1.ttf)format("truetype")}@font-face{font-family:DM Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/heartwood-2.ttf)format("truetype")}@font-face{font-family:DM Sans;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/heartwood-3.ttf)format("truetype")}@font-face{font-family:Libre Caslon Display;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/heartwood-4.ttf)format("truetype")}:root{color:#344b3e;font-synthesis:none;background:#f4f0e4;font-family:DM Sans,sans-serif;font-size:14px}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:#405746;background:#fbf8ed;border:1px solid #d9d6c5;border-radius:6px;padding:12px 18px;transition:background .16s,transform .16s}button:hover:not(:disabled){background:#e7ebd9;transform:translateY(-1px)}button:disabled{cursor:not-allowed;opacity:.48}button:focus-visible,a:focus-visible,input:focus-visible{outline-offset:4px;outline:3px solid #d2a34e}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin-top:0}h1,h2{font-family:Libre Caslon Display,Georgia,serif;font-weight:400}h2{margin:7px 0 0;font-size:39px;line-height:1.1}h3{font-size:17px}p{line-height:1.7}small{font-size:11px;line-height:1.65}button.primary{color:#314c3d;background:#e8d7a4;border-color:#e8d7a4;font-weight:600;box-shadow:0 4px 18px #172b2612}button.primary:hover:not(:disabled){background:#f3e2b3}button.secondary{color:#f4efd9;background:#173c3466;border-color:#e5e2c477}.primary span{margin-left:22px}.eyebrow{letter-spacing:2px;color:#7c876e;font-size:10px;font-weight:600}.title-page{color:#f6edcf;background:#385a48;height:100svh;min-height:690px;position:relative;overflow:hidden}.title-art{image-rendering:pixelated;filter:saturate(.8);background:url(/assets/heartwood/village.svg) 50% 55%/cover no-repeat;position:absolute;inset:-12%;transform:scale(1.03)}.title-shade{background:linear-gradient(90deg,#102f2ded 0%,#163b31d6 29%,#244c3582 51%,#16372c18 76%),linear-gradient(#173c3266,#0000 20% 75%,#102e32e6);position:absolute;inset:0}.brandbar{letter-spacing:1.5px;justify-content:space-between;align-items:center;padding:30px 4.4%;font-size:10px;display:flex;position:relative}.mini-brand{align-items:center;gap:10px;font-size:28px;display:flex}.mini-brand span{letter-spacing:2.5px;font-size:12px;font-weight:600}.top-note{letter-spacing:2px;opacity:.8;font-size:9px}.subtle{color:inherit;letter-spacing:.3px;background:0 0;border:0;padding:8px 0;font-size:11px}.subtle span{margin-left:12px}.title-copy{width:485px;max-width:80%;position:absolute;top:24%;left:9%}.overline{letter-spacing:2px;color:#d1d6b8;align-items:center;gap:12px;font-size:9px;display:flex}.overline span{background:#c3cfa4;width:22px;height:1px}.title-flourish{text-align:center;color:#c9b979;width:375px;margin:23px 0 2px;font-size:20px}.title-copy h1{letter-spacing:-3px;text-shadow:0 4px 20px #142d2930;margin:0;font-size:94px;line-height:.88}.title-copy h1 span{letter-spacing:0;padding-left:84px;font-size:77px;line-height:1.04;display:block}.title-copy>p{color:#e2e7cb;margin:30px 0 24px;font-family:Georgia,serif;font-size:17px;line-height:1.8}.title-actions{flex-direction:column;align-items:flex-start;gap:10px;display:flex}.title-actions button{text-align:left;letter-spacing:.2px;min-width:283px;padding:16px 22px}.title-actions span{float:right}.title-detail{color:#b9c7ac;margin-top:18px;font-size:10px}.title-detail>span{color:#e6ce91;margin-right:7px}.location-tag{letter-spacing:2px;text-shadow:0 2px 5px #20392c;font-size:9px;position:absolute;bottom:21%;right:8%}.location-tag small{letter-spacing:.2px;color:#e3e9d2;margin:8px 0 0 19px;font-family:Georgia,serif;font-size:14px;font-style:italic;display:block}.dot{background:#efd394;border-radius:50%;width:5px;height:5px;margin-right:12px;display:inline-block;box-shadow:0 0 13px #f6c68b}.title-footer{letter-spacing:1.8px;color:#b5c7b1;border-top:1px solid #e6edce27;justify-content:space-between;align-items:center;height:70px;font-size:8px;display:flex;position:absolute;bottom:0;left:4.4%;right:4.4%}.title-footer div{align-items:center;gap:20px;display:flex}.title-footer i{color:#d5c597;font-size:8px}.loading{color:#eee4c4;text-align:center;background:#244b3d;flex-direction:column;justify-content:center;align-items:center;min-height:100svh;padding:25px;display:flex}.loading h1{margin:15px;font-size:54px}.leafmark{color:#c6ba88;font-size:50px}.loading progress{width:260px;margin:20px}.loading small{color:#b8c8ac}progress{accent-color:#9d9d63;border:0;border-radius:10px;height:5px;overflow:hidden}progress::-webkit-progress-bar{background:#dfdfcd}progress::-webkit-progress-value{background:#8f9a68}.setup-page{background:radial-gradient(at top,#f9f5e7,#e6e8d6);min-height:100svh;padding:28px 6% 40px}.back{color:#71806b;background:0 0;border:0;padding-left:0}.setup-head{text-align:center;margin:25px 0}.setup-head h1{margin:12px 0;font-size:52px}.setup-head p{color:#7b8374}.setup-card{background:#faf7ec;border:1px solid #d4d7c4;border-radius:12px;grid-template-columns:280px 1fr;max-width:780px;margin:32px auto;display:grid;overflow:hidden;box-shadow:0 15px 50px #485b4010}.player-preview{text-align:center;background:#d9ddc3;flex-direction:column;justify-content:center;gap:24px;padding:30px 20px 18px;display:flex}.player-preview img{width:100%;image-rendering:pixelated;border-radius:120px 120px 8px 8px}.player-preview span{letter-spacing:2px;color:#788167;font-size:9px}.setup-fields{padding:32px}.setup-fields label{margin-bottom:10px;font-size:12px;font-weight:600;display:block}.setup-fields input{color:#405746;background:#fffdf5;border:1px solid #cdd1bc;border-radius:5px;width:100%;margin-bottom:24px;padding:13px}.segmented{gap:10px;display:flex}.segmented button{flex:1}.segmented .selected{color:#fff8e4;background:#486952;border-color:#486952}.hint{color:#7a826f;margin:18px 0;font-size:12px;line-height:1.7}.setup-fields>.primary{width:100%;margin:3px 0 18px}.setup-fields>small{color:#8b8e7c;display:block}.cast-strip{justify-content:center;gap:35px;margin:30px auto;display:flex}.cast-strip>div{align-items:center;gap:10px;display:flex}.cast-strip img{object-fit:cover;border-radius:50%;width:45px;height:52px}.cast-strip span{font-size:12px;font-weight:600}.cast-strip small{color:#7c866f;font-size:9px;font-weight:400;display:block}.play{background:#7f9b60;position:fixed;inset:0}.world{touch-action:none;width:100%;height:100%;display:block}.hud{pointer-events:none;justify-content:space-between;gap:20px;display:flex;position:absolute;top:22px;left:25px;right:25px}.hud>*{pointer-events:auto}.village-badge{background:#f6f1dfed;border:1px solid #fff6da;border-radius:7px;align-items:center;gap:12px;padding:12px 18px;font-family:Georgia,serif;font-size:19px;display:flex;box-shadow:0 5px 16px #283e3420}.village-badge>span{color:#72805c;font-size:32px}.village-badge small{letter-spacing:1.3px;color:#859077;margin-top:5px;font-family:DM Sans,sans-serif;font-size:8px;display:block}.hud-actions{align-items:flex-start;gap:7px;display:flex}.hud-actions button{background:#f6f1dfed;border-color:#fff6da;align-items:center;gap:9px;padding:13px 15px;font-size:19px;display:flex;box-shadow:0 5px 16px #283e3420}.hud-actions span{font-size:11px}.hud kbd{color:#929581;margin-left:3px;font-size:9px}kbd{border:1px solid;border-radius:3px;padding:2px 4px;font-family:inherit;font-size:11px}.quest-pin{color:#fff2d5;text-shadow:0 2px 5px #324931;background:linear-gradient(90deg,#35534088,#0000);border-left:2px solid #dccc9b;max-width:250px;padding:4px 12px;position:absolute;top:110px;left:26px}.quest-pin>span{letter-spacing:1.2px;font-size:8px}.quest-pin p{margin:6px 0;font-family:Georgia,serif;font-size:16px}.quest-pin button{color:#eeeed2;background:0 0;border:0;padding:0;font-size:10px}.game-bottom{justify-content:space-between;align-items:center;gap:20px;display:flex;position:absolute;bottom:25px;left:28px;right:28px}.save-status,.player-tag{color:#fff4da;text-shadow:0 2px 5px #243e30;font-size:10px}.interact{background:#f8f0dbef;border-color:#fff9df;min-height:46px;padding:13px 20px;font-size:12px;box-shadow:0 4px 25px #213b3522}.interact kbd{color:#84906f;margin-right:10px}.touch-controls{display:none}.toast{color:#f8ecd1;z-index:20;background:#294e40f5;border:1px solid #a5b18b;border-radius:7px;width:max-content;max-width:650px;padding:15px 22px;font-size:12px;position:fixed;bottom:95px;left:50%;transform:translate(-50%);box-shadow:0 6px 25px #20352933}.scrim{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:30;background:#142f2c85;justify-content:center;align-items:center;padding:25px;display:flex;position:fixed;inset:0}.modal{color:#3c5142;background:#f7f3e7;border:1px solid #e6dcbd;border-radius:12px;width:540px;max-width:100%;max-height:calc(100svh - 50px);padding:30px;overflow-y:auto;box-shadow:0 24px 90px #0b242b50}.modal.wide{width:860px}.modal>header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.close{background:#e9e9da;border:0;flex-shrink:0;width:34px;height:34px;padding:0;font-size:24px}.modal>p{color:#7a826f;font-size:13px}.button-row{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:23px;display:flex}.note{color:#75816a;background:#e9ebdc;border:1px solid #dbdfcd;border-radius:6px;margin:22px 0;padding:17px;font-size:12px;line-height:1.7}.note p{margin:8px 0}.note b{color:#4c614c}.tutorial-grid{grid-template-columns:1fr 1fr;gap:20px;margin:25px 0;display:grid}.tutorial-grid b{font-family:Georgia,serif;font-size:17px}.tutorial-grid p{color:#7b846e;margin:8px 0;font-size:12px}.inventory-grid{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.item-card{background:#eeeddd;border:1px solid #dfe1cd;border-radius:8px;flex-direction:column;align-items:center;gap:7px;padding:18px 8px;display:flex}.item-card img{width:50px;height:50px}.item-card b{font-size:11px}.item-card span{color:#7f896e;font-size:12px}.item-card.empty{opacity:.52}.journal-feature{background:#e8ebd9;border-radius:8px;margin-bottom:25px;padding:22px}.journal-feature h3{margin:10px 0;font-family:Georgia,serif;font-size:25px}.journal-feature p{margin-bottom:0;font-size:13px}.journal-list{grid-template-columns:1fr 1fr;gap:25px;display:grid}.journal-list h3{border-bottom:1px solid #dfe0ce;padding-bottom:12px}.journal-list h3 small{color:#859078;margin-left:7px;font-weight:400}.quest-row{align-items:flex-start;gap:9px;margin:18px 0;display:flex}.quest-row b{font-size:11px}.quest-row p{color:#818774;margin:5px 0;font-size:11px}.quest-row small{color:#91977b;font-size:9px}.quest-row>span:last-child{white-space:nowrap;color:#7e8a72;margin-left:auto;padding-top:3px;font-size:8px}.quest-status{color:#909d68}.relationship-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.relationship-card{background:#eeedde;border:1px solid #dbdfcd;border-radius:8px;gap:16px;display:flex;overflow:hidden}.relationship-card>img{object-fit:cover;object-position:center;width:120px;image-rendering:pixelated}.relationship-card>div{flex:1;padding:17px 10px 17px 0}.relationship-card h3{margin:0 0 5px;font-family:Georgia,serif;font-size:24px}.relationship-card h3 small{color:#9a9e87;margin-left:5px;font-family:DM Sans,sans-serif}.relationship-card>div>span{color:#8a907a;font-size:10px}.stage{text-transform:capitalize;color:#687b56;margin:12px 0 4px;font-size:10px}.relationship-card progress{width:100%;margin-bottom:7px}.relationship-card small{color:#7f8871;font-size:9px}.conversation{grid-template-columns:220px 1fr;gap:27px;display:grid}.portrait img{width:100%;image-rendering:pixelated;border-radius:110px 110px 6px 6px;display:block}.portrait>div{text-align:center;background:#e9ebd9;border:1px solid #d9ddc4;border-top:0;border-radius:0 0 7px 7px;padding:17px 8px}.portrait b{font-family:Georgia,serif;font-size:17px;font-weight:400;display:block}.portrait span{color:#7b886b;margin-top:9px;font-size:10px;display:block}.dialogue-main{min-width:0}.dialogue-main blockquote{color:#465d48;min-height:106px;margin:0 0 23px;font-family:Georgia,serif;font-size:18px;line-height:1.75}.dialogue-tabs{border-bottom:1px solid #d7ddc8;gap:4px;margin-bottom:17px;display:flex}.dialogue-tabs button{color:#8d957d;background:0 0;border:0;border-radius:0;padding:12px 9px;font-size:11px}.dialogue-tabs button.active{color:#425d42;border-bottom:2px solid #78855d}.choices{flex-direction:column;gap:8px;display:flex}.choices>button{text-align:left;background:#edeee1;border-color:#dce0cc;justify-content:space-between;align-items:center;padding:12px 14px;font-size:12px;display:flex}.choices>button small{color:#899476;white-space:nowrap;padding-left:9px;font-size:9px}.choices .hint{margin:0 0 8px;font-size:10px}.farewell{color:#899274;background:0 0;border:0;margin-top:20px;padding:8px 0;font-size:11px}.dialogue-quest{border:1px solid #dde1ce;border-radius:6px;padding:12px}.dialogue-quest b{font-size:12px}.dialogue-quest p{color:#849174;margin:5px 0 10px;font-size:10px}.dialogue-quest button{padding:8px 12px;font-size:11px}.commitment{background:#e6e7d2;border-radius:6px;margin-top:15px;padding:18px}.commitment b{font-family:Georgia,serif;font-size:17px}.commitment p{margin-top:9px;font-size:12px}.commitment .button-row{justify-content:flex-start}.commitment button{font-size:11px}.pause-buttons{flex-direction:column;gap:10px;margin-bottom:30px;display:flex}.pause-buttons button{text-align:left;justify-content:space-between;display:flex}.pause-buttons small{color:#8c957e}.toggle{align-items:center;gap:10px;margin:15px 0;font-size:12px;display:flex}.toggle input{accent-color:#6e815d;width:16px;height:16px}.dialogue-feedback{background:#e9ebd9;margin-top:20px;padding:15px;font-size:12px!important}.error{color:#a45d4b!important}.error-banner{z-index:60;color:#875a44;background:#fff0d4;border:1px solid #c4a174;border-radius:6px;align-items:center;gap:15px;width:600px;max-width:90%;padding:12px;font-size:12px;display:flex;position:fixed;top:95px;left:50%;transform:translate(-50%);box-shadow:0 6px 30px #20352740}.error-banner button{white-space:nowrap;margin-left:auto;padding:8px 14px}.large-text{font-size:17px}.large-text .modal p,.large-text .choices button,.large-text .hint,.large-text .note,.large-text .toggle{font-size:16px}.large-text .dialogue-main blockquote{font-size:22px}.reduced *{transition:none!important;animation:none!important}@media (width>=1600px){.title-copy{transform-origin:0;top:27%;left:12%;transform:scale(1.15)}}@media (height<=760px) and (width>=701px){.title-copy{top:20%}.title-copy h1{font-size:80px}.title-copy h1 span{font-size:65px}.title-copy>p{margin:22px 0}.title-flourish{margin-top:15px}.title-page{min-height:620px}}@media (pointer:coarse),(width<=700px){.touch-controls{pointer-events:none;justify-content:space-between;align-items:flex-end;display:flex;position:absolute;bottom:85px;left:25px;right:25px}.touch-controls button{pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;background:#f5efd9cc;border-color:#ffffe877;min-width:48px;min-height:48px}.dpad{grid-template-rows:repeat(2,48px);grid-template-columns:repeat(3,48px);gap:4px;display:grid}.key-w{grid-column:2}.key-a{grid-area:2/1}.key-s{grid-area:2/2}.key-d{grid-area:2/3}.touch-interact{border-radius:50%;width:72px;height:72px;font-size:20px}.touch-interact span{font-size:9px;display:block}}@media (width<=700px){.title-page{min-height:730px}.brandbar{padding:24px 7%}.top-note{display:none}.mini-brand span{font-size:10px}.subtle{font-size:9px}.title-art{background-position:60%;background-size:auto 115%;inset:-5%}.title-shade{background:linear-gradient(90deg,#173b32e3,#2048347a),linear-gradient(#0000 55%,#183b32ed)}.title-copy{width:82%;max-width:82%;top:24%;left:9%}.overline{letter-spacing:1.5px;gap:8px;font-size:7px}.overline span{width:15px}.title-copy h1{font-size:76px}.title-copy h1 span{padding-left:65px;font-size:65px}.title-flourish{width:290px;margin-top:25px;font-size:17px}.title-copy>p{margin-top:27px;font-size:15px}.title-detail{font-size:9px}.title-actions button{min-width:275px}.location-tag{display:none}.title-footer{letter-spacing:1px;height:70px;font-size:7px;left:7%;right:7%}.title-footer>span:last-child{display:none}.title-footer div{gap:10px}.setup-head h1{font-size:40px}.setup-page{padding:20px}.setup-card{grid-template-columns:1fr;margin:24px auto}.player-preview{align-items:center;padding:20px}.player-preview img{width:135px}.player-preview span{display:none}.setup-fields{padding:25px}.cast-strip{grid-template-columns:1fr 1fr;gap:20px;width:max-content;margin:auto;display:grid}.hud{gap:8px;top:12px;left:12px;right:12px}.village-badge{gap:7px;padding:10px;font-size:13px}.village-badge>span{font-size:22px}.village-badge small{letter-spacing:.4px;font-size:6px}.hud-actions{gap:4px}.hud-actions button{padding:10px;font-size:19px}.hud-actions span,.hud-actions kbd{display:none}.quest-pin{max-width:220px;top:91px;left:15px}.quest-pin p{font-size:13px}.quest-pin>span{font-size:7px}.game-bottom{justify-content:center;bottom:18px;left:15px;right:15px}.save-status{font-size:8px;position:absolute;bottom:58px;right:0}.player-tag{display:none}.interact{max-width:100%;padding:12px 15px;font-size:10px}.scrim{padding:12px}.modal{max-height:calc(100svh - 24px);padding:22px}.modal>header{margin-bottom:20px}h2{font-size:31px}.modal.wide{width:100%}.conversation{grid-template-columns:1fr;gap:18px}.portrait{align-items:center;gap:15px;display:flex}.portrait img{border-radius:40px 40px 5px 5px;width:80px;height:94px}.portrait>div{text-align:left;background:0 0;border:0;padding:0}.portrait span{margin-top:6px}.dialogue-main blockquote{min-height:0;font-size:16px}.dialogue-tabs{justify-content:space-between}.dialogue-tabs button{padding:10px 8px;font-size:11px}.choices>button{min-height:44px}.inventory-grid{gap:7px}.item-card{padding:13px 5px}.item-card b{font-size:9px}.relationship-grid,.journal-list{grid-template-columns:1fr}.relationship-card>img{width:115px}.relationship-card small{font-size:10px}.relationship-card>div{padding:14px}.tutorial-grid{gap:15px}.tutorial-grid b{font-size:15px}.tutorial-grid p{font-size:11px}.toast{width:90%;max-width:calc(100% - 35px);font-size:11px;bottom:210px}.error-banner{top:80px}.button-row button{font-size:12px}.modal>.primary{width:100%}.large-text .dialogue-main blockquote{font-size:20px}.large-text .choices>button{font-size:14px}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
