/* Google Fonts, served locally for offline play. See ../fonts/sources.json. */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 300;
  font-stretch: normal;
  font-display: swap;
  src: url(../fonts/ibm-plex-sans-300.ttf) format('truetype');
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400;
  font-stretch: normal;
  font-display: swap;
  src: url(../fonts/ibm-plex-sans-400.ttf) format('truetype');
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 500;
  font-stretch: normal;
  font-display: swap;
  src: url(../fonts/ibm-plex-sans-500.ttf) format('truetype');
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 600;
  font-stretch: normal;
  font-display: swap;
  src: url(../fonts/ibm-plex-sans-600.ttf) format('truetype');
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 700;
  font-stretch: normal;
  font-display: swap;
  src: url(../fonts/ibm-plex-sans-700.ttf) format('truetype');
}
@font-face {
  font-family: 'Inconsolata';
  font-style: normal;
  font-weight: 400;
  font-stretch: normal;
  font-display: swap;
  src: url(../fonts/inconsolata-400.ttf) format('truetype');
}
@font-face {
  font-family: 'Inconsolata';
  font-style: normal;
  font-weight: 500;
  font-stretch: normal;
  font-display: swap;
  src: url(../fonts/inconsolata-500.ttf) format('truetype');
}
@font-face {
  font-family: 'Inconsolata';
  font-style: normal;
  font-weight: 600;
  font-stretch: normal;
  font-display: swap;
  src: url(../fonts/inconsolata-600.ttf) format('truetype');
}
@font-face {
  font-family: 'Inconsolata';
  font-style: normal;
  font-weight: 700;
  font-stretch: normal;
  font-display: swap;
  src: url(../fonts/inconsolata-700.ttf) format('truetype');
}
:root{--pf-font-sans-latin:"IBM Plex Sans", system-ui, -apple-system, sans-serif;--pf-font-sans-sc:"IBM Plex Sans SC", "Source Han Sans SC", "Noto Sans CJK SC", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--pf-font-sans-tc:"IBM Plex Sans TC", "Source Han Sans TC", "Noto Sans CJK TC", "PingFang TC", "Microsoft JhengHei", sans-serif;--pf-font-sans-hc:"Source Han Sans HC", "Noto Sans CJK HK", "PingFang HK", "IBM Plex Sans TC", sans-serif;--pf-font-sans:var(--pf-font-sans-latin);--pf-font-serif-latin:"IBM Plex Serif", "STIX Two Text", serif;--pf-font-serif-sc:"Source Han Serif SC", "Noto Serif CJK SC", "Songti SC", serif;--pf-font-serif-tc:"Source Han Serif TC", "Noto Serif CJK TC", "Songti TC", serif;--pf-font-serif:var(--pf-font-serif-latin);--pf-font-math:"IBM Plex Math", "STIX Two Math", "Cambria Math", serif;--pf-font-mono:"Inconsolata", monospace;--pf-font-mono-sc:"Sarasa Mono SC", "Sarasa Fixed SC", "Noto Sans Mono CJK SC", monospace;--pf-font-mono-tc:"Sarasa Mono TC", "Sarasa Fixed TC", "Noto Sans Mono CJK TC", monospace;--pf-bg:#fff;--pf-fg:#020618;--pf-muted:#62748e;--pf-border:#e2e8f0;--pf-border-strong:#cad5e2;--pf-hover:#f1f5f9;--pf-surface:#f8fafc;--pf-accent:#0f172b;--pf-accent-fg:#f8fafc;--pf-green:#008138;--pf-green-bg:#e6f6ec;--pf-green-border:#adf0c6;--pf-red:#9f1239;--pf-red-bg:#fff5f5;--pf-red-border:#f1b4b4;--pf-blue:#2563eb;--pf-mint:#22c55e;--pf-focus:#2563eb;--pf-radius:0px;--pf-border-width:1px}html:lang(zh-CN),html:lang(zh-SG){--pf-font-sans:var(--pf-font-sans-sc);--pf-font-serif:var(--pf-font-serif-sc);--pf-font-mono:var(--pf-font-mono-sc)}html:lang(zh-TW),html:lang(zh-MO){--pf-font-sans:var(--pf-font-sans-tc);--pf-font-serif:var(--pf-font-serif-tc);--pf-font-mono:var(--pf-font-mono-tc)}html:lang(zh-HK){--pf-font-sans:var(--pf-font-sans-hc);--pf-font-serif:var(--pf-font-serif-tc);--pf-font-mono:var(--pf-font-mono-tc)}html[data-theme=dark]{--pf-bg:#0b1018;--pf-fg:#e6edf6;--pf-muted:#93a4b8;--pf-border:#27313f;--pf-border-strong:#3b4858;--pf-hover:#19212e;--pf-surface:#121a26;--pf-accent:#e6edf6;--pf-accent-fg:#0b1018;--pf-green:#4ade80;--pf-green-bg:#132d1d;--pf-green-border:#1b4e2d;--pf-red:#fca5a5;--pf-red-bg:#2a1416;--pf-red-border:#7f1d1d;--pf-focus:#93c5fd}*{box-sizing:border-box;margin:0;padding:0;border-radius:var(--pf-radius)!important}body{background-color:var(--pf-bg);color:var(--pf-fg);font-family:var(--pf-font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5}h1,h2,h3,h4,h5,h6{font-family:var(--pf-font-sans);color:var(--pf-accent);font-weight:600}code,pre,kbd,samp{font-family:var(--pf-font-mono);font-size:.9em}math,.pf-math-native{font-family:var(--pf-font-math)}:focus-visible{outline:2px solid var(--pf-focus);outline-offset:2px}table{border-collapse:collapse;text-align:left;width:100%;font-size:.9rem}th,td{border-bottom:var(--pf-border-width) solid var(--pf-border);padding:8px 12px}th{background-color:var(--pf-surface);border-bottom:2px solid var(--pf-border-strong);font-weight:600}tr:hover td{background-color:var(--pf-hover)}button,.btn{font-family:var(--pf-font-sans);background-color:var(--pf-bg);color:var(--pf-fg);border:var(--pf-border-width) solid var(--pf-border-strong);cursor:pointer;box-shadow:none;justify-content:center;align-items:center;padding:6px 12px;font-size:.85rem;font-weight:500;transition:background-color .15s;display:inline-flex}button:hover,.btn:hover{background-color:var(--pf-hover)}button:disabled,.btn[aria-disabled=true],input:disabled,select:disabled,textarea:disabled{cursor:not-allowed;opacity:.55}button[aria-busy=true],.btn[aria-busy=true]{cursor:progress}button.primary,.btn-primary{background-color:var(--pf-accent);color:var(--pf-accent-fg);border-color:var(--pf-accent)}button.primary:hover,.btn-primary:hover{background-color:var(--pf-hover);color:var(--pf-fg)}input,select,textarea{font-family:var(--pf-font-sans);border:var(--pf-border-width) solid var(--pf-border);background-color:var(--pf-bg);color:var(--pf-fg);outline:none;padding:6px 10px;font-size:.9rem}input:focus,select:focus,textarea:focus{border-color:var(--pf-border-strong);box-shadow:0 0 0 1px var(--pf-border-strong)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.badge{font-family:var(--pf-font-mono);text-transform:uppercase;letter-spacing:.05em;border:var(--pf-border-width) solid var(--pf-border);background-color:var(--pf-surface);align-items:center;padding:2px 6px;font-size:.75rem;font-weight:600;display:inline-flex}.badge-online{color:var(--pf-green);background-color:var(--pf-green-bg);border-color:var(--pf-green-border)}.badge-offline{color:var(--pf-red);background-color:var(--pf-red-bg);border-color:var(--pf-red-border)}.histogram-container{font-family:var(--pf-font-mono);align-items:center;gap:8px;font-size:.85rem;display:flex}.histogram-bar{background-color:var(--pf-hover);border:var(--pf-border-width) solid var(--pf-border);flex:1;height:12px;display:flex}.histogram-fill{height:100%}.histogram-fill-cpu{background-color:var(--pf-mint)}.histogram-fill-mem{background-color:var(--pf-blue)}body{min-width:360px}button{gap:7px;min-height:36px}a{color:inherit}.app-shell{background:var(--pf-bg);flex-direction:column;width:100%;height:100dvh;display:flex;overflow:hidden}.site-header{min-height:56px;padding:6px max(12px, env(safe-area-inset-right)) 6px max(12px, env(safe-area-inset-left));border-bottom:1px solid var(--pf-border);background:var(--pf-bg);z-index:10;flex:0 0 56px;justify-content:space-between;align-items:center;gap:12px;display:flex}.wordmark{white-space:nowrap;align-items:center;gap:9px;font-size:17px;font-weight:500;display:flex}.wordmark-dot{color:var(--pf-muted)}.header-actions,.workspace-actions,.book-name,.sticker-controls{align-items:center;gap:9px;display:flex}.save-status{color:var(--pf-muted);align-items:center;gap:6px;margin-right:15px;font-size:12px;display:flex}.save-error{color:var(--pf-red)}.icon-button{flex-shrink:0;width:36px;padding:0}.header-actions .icon-button{border-color:#0000}.intro{justify-content:space-between;align-items:center;padding:43px 0 33px;display:flex}.eyebrow{color:var(--pf-muted);font-family:var(--pf-font-mono);letter-spacing:1.8px;font-size:10px;font-weight:500}h1{letter-spacing:-2px;margin:9px 0 12px;font-size:clamp(34px,3.7vw,52px);font-weight:400;line-height:1.15}.intro-copy{color:var(--pf-muted);font-size:14px}.intro-mark{align-items:center;gap:12px;padding-right:15px;display:flex}.intro-mark img{width:62px;height:62px;transform:rotate(-17deg)}.intro-mark span{font-family:var(--pf-font-mono);color:var(--pf-muted);font-size:12px}.game-main{background:var(--pf-surface);flex:1;min-width:0;min-height:0;position:relative}.game-main:has(.playground[data-undoing=true]){z-index:20;pointer-events:none}.book-workspace{width:100%;height:100%}.game-viewport{width:100%;height:100%;position:relative;container-type:size}.game-dock{padding:7px max(12px, env(safe-area-inset-right)) max(6px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));background:var(--pf-bg);border-top:1px solid var(--pf-border);flex:none;position:relative}.game-version{color:var(--pf-muted);font:10px var(--pf-font-mono);position:absolute;bottom:12px;right:12px}.game-version .artifact-update:has(button){background:var(--pf-bg);border:1px solid var(--pf-border-strong);z-index:30;max-width:calc(100vw - 24px);padding:8px 12px;position:fixed;bottom:112px;right:12px}.book-workspace[data-undoing=true]{overflow:visible}.workspace-toolbar{border-bottom:1px solid var(--pf-border);justify-content:space-between;align-items:center;gap:12px;height:58px;padding:0 22px;display:flex}.book-name{gap:10px;font-size:13px}.edition{font-family:var(--pf-font-mono);color:var(--pf-muted);border-left:1px solid var(--pf-border);margin-left:6px;padding-left:12px}.workspace-actions button{border-color:#0000;font-size:12px}.options-wrap{position:relative}.options-panel{z-index:30;background:var(--pf-bg);border:1px solid var(--pf-border-strong);width:302px;padding:18px;position:absolute;top:44px;right:0}.tear-option{cursor:pointer;align-items:flex-start;gap:16px;font-size:14px;display:flex}.tear-option svg{vertical-align:-4px;margin-right:7px}.tear-option small{color:var(--pf-muted);margin-top:8px;font-size:12px;line-height:1.6;display:block}.tear-option input{width:18px;height:18px;accent-color:var(--pf-accent);margin-top:3px}.options-panel>button{border-top:1px solid var(--pf-border);flex-direction:column;align-items:flex-start;width:100%;margin-top:17px;padding:15px 0 0}.options-panel>button span{color:var(--pf-muted);font-size:11px}.playground{width:min(100cqw, calc(100cqh * var(--world-aspect)));aspect-ratio:var(--world-aspect);isolation:isolate;background:var(--pf-surface);position:absolute;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.playground[data-undoing=true]{z-index:4;overflow:visible}.sheet-paper{background:var(--pf-bg);border:1px solid var(--pf-border-strong);position:absolute}.sheet-heading{color:var(--pf-muted);font-family:var(--pf-font-mono);letter-spacing:1px;border-bottom:1px solid var(--pf-border);justify-content:space-between;align-items:center;padding-bottom:6%;font-size:clamp(6px,.72vw,11px);display:flex;position:absolute;top:5%;left:9%;right:9%}.sheet-dot-grid{background-image:radial-gradient(var(--pf-border) .7px, transparent .7px);opacity:.6;background-size:12px 12px;position:absolute;inset:17% 5% 10%}.sheet-bottom{text-align:center;width:100%;color:var(--pf-muted);font-family:var(--pf-font-mono);letter-spacing:1.5px;font-size:clamp(5px,.65vw,10px);position:absolute;bottom:3.1%}.book-paper{background:var(--pf-border-strong);border:1px solid var(--pf-border-strong);padding:5px;position:absolute}.page-underlay{z-index:-1;background:#e9e5db;border-bottom:2px double #cfcac0;border-right:1px solid #cfcac0;position:absolute;inset:6px 4px -4px}.paper-page{background-color:#fffdf7;background-image:url(/paper.png);background-size:192px;width:calc(50% - 5px);position:absolute;top:5px;bottom:6px}.left-page{border-right:1px solid #ded8ca;left:5px}.right-page{right:5px}.book-spine{background:#e7e1d5;border-left:1px solid #d9d1c1;border-right:1px solid #f6f1e5;width:5px;position:absolute;top:5px;bottom:6px;left:50%;transform:translate(-50%)}.page-corner-label{color:#9b988b;font-family:var(--pf-font-mono);letter-spacing:1.5px;font-size:clamp(5px,.65vw,10px);position:absolute;top:5%;left:7%;right:7%}.right-page .page-corner-label{text-align:right}.page-number{color:#aaa495;font-family:var(--pf-font-mono);font-size:clamp(7px,.85vw,12px);position:absolute;bottom:3%}.left-page .page-number{left:7%}.right-page .page-number{right:7%}.page-invitation{text-align:center;color:#beb8a7;width:100%;transition:opacity .6s;position:absolute;top:36%;left:0}.page-invitation>span:first-child{letter-spacing:-.5px;font-family:Georgia,serif;font-size:clamp(15px,2.35vw,35px);font-style:italic;line-height:1.35}.invitation-line{background:#d3ccb9;width:26px;height:1px;margin:19px auto 12px;display:block}.page-invitation small{color:#a69f8e;font-size:clamp(6px,.8vw,12px)}.page-invitation.has-stickers{opacity:.22}.scene-host{z-index:3;position:absolute;inset:0}.scene-host>div{width:100%;height:100%}.scene-host canvas{touch-action:none;display:block}.stack-notice{border:1px solid var(--pf-border);background:var(--pf-bg);color:var(--pf-muted);pointer-events:none;padding:5px 10px;font-size:11px;position:absolute;top:14px;left:28%}.edge-marker{width:30px;height:30px;color:var(--pf-accent);pointer-events:none;z-index:5;position:absolute}.edge-marker svg{stroke-width:2px;paint-order:stroke;filter:drop-shadow(0 0 2px #fff);width:30px;height:30px;display:block}.sheet-counter,.book-counter{font-family:var(--pf-font-mono);color:var(--pf-muted);pointer-events:none;font-size:clamp(6px,.75vw,11px);position:absolute;bottom:3%}.sheet-counter{text-align:center;width:21.43%;left:2%}.book-counter{right:2%}.loading-label{z-index:4;color:var(--pf-muted);background:color-mix(in srgb, var(--pf-surface) 94%, transparent);pointer-events:none;place-items:center;font-size:14px;display:grid;position:absolute;inset:0}.interaction-bar{justify-content:space-between;align-items:center;gap:12px;min-width:0;height:32px;padding-right:120px;display:flex}.interaction-hint{min-width:0;color:var(--pf-muted);align-items:center;gap:8px;font-size:12px;display:flex}.interaction-hint>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.activity-indicator{background:var(--pf-muted);flex-shrink:0;width:5px;height:5px}.activity-indicator.active{background:var(--pf-accent)}.selected-name{font-family:var(--pf-font-mono);color:var(--pf-muted);margin-right:4px;font-size:11px}.sticker-controls{flex-shrink:0}.sticker-controls button{min-height:28px;font-size:11px}.sticker-controls .icon-button{width:28px}.below-book{color:var(--pf-muted);justify-content:space-between;align-items:center;gap:20px;padding:19px 2px 0;font-size:11px;display:flex}.below-book>div{align-items:center;gap:10px;display:flex}.below-book strong{color:var(--pf-fg);font-weight:500}.below-book>span{white-space:nowrap}kbd{border:1px solid var(--pf-border);padding:2px 5px;font-size:10px}.key-divider{color:var(--pf-border-strong);margin:0 9px}.accessible-stickers{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.accessible-stickers:focus-within{clip-path:none;border:1px solid var(--pf-border-strong);background:var(--pf-bg);z-index:20;flex-wrap:wrap;gap:8px;width:auto;height:auto;max-height:40vh;padding:10px;display:flex;position:absolute;bottom:10px;left:10px;right:10px;overflow:auto}.site-footer{color:var(--pf-muted);font-family:var(--pf-font-mono);letter-spacing:.15px;justify-content:space-between;align-items:center;padding:36px 0 27px;font-size:10px;display:flex}.site-footer a{align-items:center;gap:5px;text-decoration:none;display:flex}.site-footer a:hover{color:var(--pf-fg)}.build-version{font:inherit;margin-top:5px;display:block}.artifact-update{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.artifact-update button{min-height:32px;font:inherit}.help-backdrop{z-index:100;background:color-mix(in srgb, var(--pf-fg) 27%, transparent);place-items:center;padding:20px;display:grid;position:fixed;inset:0}.help-panel{background:var(--pf-bg);border:1px solid var(--pf-border-strong);max-width:460px;max-height:90vh;padding:36px;position:relative;overflow:auto}.close-help{border:0;position:absolute;top:15px;right:15px}.help-panel h2{letter-spacing:-.8px;margin:12px 0 24px;font-size:26px;font-weight:400}.help-panel ol{padding-left:20px;list-style-position:outside}.help-panel li{margin-bottom:21px;padding-left:6px;font-size:13px}.help-panel li strong,.help-panel li span{display:block}.help-panel li strong{margin-bottom:5px;font-weight:500}.help-panel li span,.help-note{color:var(--pf-muted);font-size:12px;line-height:1.7}.help-note{margin:16px 0}.help-panel>.primary{width:100%;min-height:44px;margin-top:13px}.scene-fallback{background:var(--pf-surface);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:25px;display:flex}.scene-fallback p{color:var(--pf-muted);font-size:13px}.credits{max-width:700px;margin:70px auto;padding:25px}.credits h1{font-size:36px}.credits p{margin:22px 0;line-height:1.8}.scene-page-art{border:0;padding:0}.spread-number{font:10px var(--pf-font-mono);color:var(--pf-muted);position:absolute;bottom:3%}.spread-number.left{left:3%}.spread-number.right{right:3%}.book-tools,.creative-tools,.page-navigation{align-items:center;gap:10px;display:flex}.book-tools{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:12px;display:grid}.page-navigation{justify-content:flex-end}.book-tools button{min-height:44px}.book-tools .icon-button{width:44px}.page-turn-status{width:max-content;max-width:calc(100% - 24px);color:var(--pf-muted);background:var(--pf-bg);border:1px solid var(--pf-border);z-index:12;margin:0;padding:6px 10px;font-size:12px;position:absolute;bottom:10px;left:50%;transform:translate(-50%)}.page-turn-status button{min-height:0;color:inherit;font:inherit;border:0;padding:0;text-decoration:underline;display:inline}.page-step{min-width:76px}.trash-bin{text-align:left;min-width:110px;min-height:44px!important}.trash-bin small{color:var(--pf-muted);margin-top:3px;font-size:10px;display:block}.trash-bin[data-drop-active=true]{color:var(--pf-bg);background:var(--pf-fg);outline:3px solid var(--pf-border-strong);outline-offset:2px}.trash-bin[data-drop-active=true] small{color:inherit}.trash-bin[data-drop-active=true] svg{transform:rotate(-12deg)}.book-dialog{background:var(--pf-bg);border:1px solid var(--pf-border-strong);width:min(650px,100vw - 32px);max-height:90vh;padding:26px;overflow-y:auto}.dialog-heading{justify-content:space-between;align-items:center;gap:20px;margin-bottom:22px;display:flex}.dialog-heading h2{letter-spacing:-.6px;margin:0;font-size:25px;font-weight:400}.book-dialog button{min-height:44px}.book-dialog .icon-button{width:44px}.background-choices{grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:20px;display:grid}.background-choices button,.page-gallery button{flex-direction:column;gap:7px;padding:7px;font-size:12px;display:flex}.background-choices img,.page-gallery img{aspect-ratio:988/612;object-fit:contain;width:100%}.book-dialog button[aria-pressed=true]{border-color:var(--pf-fg);background:var(--pf-surface);outline:1px solid var(--pf-fg);outline-offset:-1px}.option-toggles{border-top:1px solid var(--pf-border)}.option-toggles label{border-bottom:1px solid var(--pf-border);cursor:pointer;justify-content:space-between;align-items:center;gap:24px;padding:14px 0;font-size:14px;display:flex}.option-toggles small{color:var(--pf-muted);margin-top:5px;font-size:12px;line-height:1.5;display:block}.option-toggles input{width:24px;height:24px;accent-color:var(--pf-fg);cursor:pointer;flex-shrink:0}.export-actions{gap:12px;margin-top:20px;display:flex}.export-actions button{flex:1}.reset-book{border-color:#0000;justify-content:flex-start;align-items:center;gap:8px;width:100%;margin-top:22px;display:flex}.reset-book small{color:var(--pf-muted);margin-left:auto}.page-gallery{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.page-gallery small{color:var(--pf-muted)}.page-gallery .add-page-tile{justify-content:center}.theme-choices{flex-wrap:wrap;gap:8px;display:flex}.theme-choices button{padding:7px 12px;font-size:13px}.theme-choices span{font-size:20px}.sheet-envelope{border:1px solid var(--pf-border-strong);background:var(--pf-surface);perspective:700px;width:min(330px,100%);margin:24px auto;padding:32px 24px 20px;position:relative}.envelope-flap{z-index:1;clip-path:polygon(0 0,100% 0,50% 100%);background:var(--pf-border);transform-origin:top;height:50px;transition:transform .35s;position:absolute;top:-1px;left:-1px;right:-1px}.envelope-preview{grid-template-columns:repeat(3,1fr);gap:14px;display:grid}.envelope-preview img{object-fit:contain;width:100%;height:62px}.sheet-envelope.opening .envelope-flap{transform:rotateX(170deg)}.sheet-envelope.opening .envelope-preview{animation:.35s both sheet-reveal}.sheet-envelope p{color:var(--pf-muted);text-align:center;font-size:13px}.material-options{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.material-options button{text-align:left;justify-content:flex-start;padding:12px;font-size:13px}.material-options small{color:var(--pf-muted);margin-top:4px;font-size:11px;display:block}.material-swatch{border:1px solid var(--pf-border-strong);background:#fff;flex-shrink:0;width:28px;height:32px;display:inline-block}.material-swatch.foil{background:linear-gradient(125deg,#b7bcc4 20%,#fafbfc 40%,#979ea9 60%,#d7dce2 80%)}.material-swatch.holographic{background:linear-gradient(135deg,#d4aff3,#b6dcfa 22%,#bceacc 42%,#ffe1a1 60%,#efbad6 78%,#c8b8ef)}.material-swatch.glitter{background-color:#d4c1a0;background-image:radial-gradient(circle at 2px 2px,#fff 1px,#0000 1.5px),radial-gradient(circle at 5px 6px,#fff1b4 1px,#0000 1.5px),radial-gradient(circle at 7px 3px,#af91ca 1px,#0000 1.5px);background-size:9px 9px}.material-swatch.transparent{opacity:.6;background:repeating-conic-gradient(#fff 0% 25%,#dedfe1 0% 50%) 50%/12px 12px}.material-swatch.puffy{background:#eeeef0;border-radius:8px;box-shadow:inset -3px -3px 4px #c6c7cc,inset 3px 3px 4px #fff}.open-envelope{width:100%;margin-top:20px}.drawing-library{grid-template-columns:repeat(4,1fr);gap:8px;max-height:180px;margin-top:18px;display:grid;overflow-y:auto}.drawing-library button{overflow-wrap:anywhere;flex-direction:column;min-width:0;padding:8px;font-size:12px}.drawing-library img{object-fit:contain;width:50px;height:50px}.book-notice{border:1px solid var(--pf-border);background:var(--pf-bg);z-index:14;justify-content:space-between;align-items:center;gap:15px;max-width:calc(100% - 24px);padding:8px 12px;font-size:13px;display:flex;position:absolute;bottom:10px;left:50%;transform:translate(-50%)}.play-instructions{padding-left:22px}.play-instructions li{margin:16px 0;line-height:1.7}.book-dialog p{color:var(--pf-muted);font-size:13px;line-height:1.7}.page-turn-overlay{--turn-duration:.85s;perspective:1800px;z-index:8;pointer-events:auto;position:absolute}.turn-destination{width:100%;height:100%;position:absolute;inset:0}.turn-stationary{position:absolute;inset:0 50% 0 0;overflow:hidden}.turn-stationary canvas,.turn-face canvas{width:200%;max-width:none;height:100%;position:absolute;top:0}.turn-stationary canvas{left:0}.turning-leaf{transform-origin:0;width:50%;height:100%;transform-style:preserve-3d;animation:page-turn var(--turn-duration) cubic-bezier(.35,.08,.32,1) both;position:absolute;top:0;left:50%}.turn-face{background:var(--pf-bg);backface-visibility:hidden;border:1px solid var(--pf-border-strong);box-shadow:4px 8px 14px color-mix(in srgb, var(--pf-fg) 22%, transparent);position:absolute;inset:0;overflow:hidden}.turn-front canvas{left:-100%}.turn-back{transform:rotateY(180deg)}.turn-back canvas{left:0}.turn-face:after{content:"";background:linear-gradient(90deg, color-mix(in srgb, var(--pf-fg) 13%, transparent), transparent 25%, color-mix(in srgb, var(--pf-bg) 53%, transparent) 80%, color-mix(in srgb, var(--pf-fg) 11%, transparent));opacity:0;animation:turn-light var(--turn-duration) ease both;position:absolute;inset:0}.turn-shadow{background:var(--pf-fg);opacity:0;filter:blur(10px);transform-origin:50%;animation:turn-shadow var(--turn-duration) ease both;position:absolute;inset:1% 2%}.reverse .turn-stationary{left:50%;right:0}.reverse .turn-stationary canvas{left:-100%}.reverse .turning-leaf{transform-origin:100%;animation-name:page-turn-back;left:0}.reverse .turn-front canvas{left:0}.reverse .turn-back canvas{left:-100%}.page-turn-overlay.finished .turning-leaf,.page-turn-overlay.finished .turn-stationary,.page-turn-overlay.finished .turn-shadow{display:none}@keyframes page-turn{0%{transform:rotateY(0)}to{transform:rotateY(-180deg)}}@keyframes page-turn-back{0%{transform:rotateY(0)}to{transform:rotateY(180deg)}}@keyframes turn-light{0%,to{opacity:0}40%,70%{opacity:1}}@keyframes turn-shadow{0%,to{opacity:0;transform:scaleX(.03)}50%{opacity:.2;transform:scaleX(.4)}}@keyframes sheet-reveal{0%{opacity:1;transform:translateY(0)}to{opacity:.25;transform:translateY(-15px)}}@media (width<=700px){.book-dialog{padding:18px}.background-choices{grid-template-columns:repeat(3,1fr)}.book-tools{gap:16px}.creative-tools,.page-navigation{flex-wrap:wrap;gap:7px}.book-tools button{font-size:12px}.page-gallery{grid-template-columns:repeat(2,1fr)}}@media (prefers-reduced-motion:reduce){.turning-leaf,.sheet-envelope.opening .envelope-preview{animation:none}.envelope-flap{transition:none}}.app-shell[data-full-motion=true] .turning-leaf{animation:page-turn var(--turn-duration) cubic-bezier(.35,.08,.32,1) both!important}.app-shell[data-full-motion=true] .reverse .turning-leaf{animation-name:page-turn-back!important}.app-shell[data-full-motion=true] .turn-face:after,.app-shell[data-full-motion=true] .turn-shadow{animation-duration:var(--turn-duration)!important}.app-shell[data-full-motion=true] .sheet-envelope.opening .envelope-preview{animation:.35s both sheet-reveal!important}.app-shell[data-full-motion=true] .envelope-flap{transition:transform .35s!important}@media (width<=850px){.site-header{flex-basis:48px;gap:8px;min-height:48px}.save-status{display:none}.wordmark{font-size:15px}.book-tools{gap:8px}.book-tools button{padding:6px 8px;font-size:12px}.page-step{min-width:58px}.page-navigation,.creative-tools{gap:6px}.selected-name{display:none}}@media (width<=700px){.book-tools{grid-template-columns:minmax(0,1fr) auto}.page-navigation{grid-column:1/-1;justify-content:center}.creative-tools{flex-wrap:nowrap}.game-dock{padding-top:5px}.interaction-bar{height:32px;padding-right:0}.interaction-hint{font-size:10px}.game-version{font-size:8px;bottom:3px;right:8px}.game-version .artifact-update:has(button){bottom:152px}.sticker-controls{gap:3px;padding-right:84px}.sticker-controls button{padding:3px 5px}}@media (width<=500px){.site-header{gap:4px;padding-inline:8px}.wordmark{gap:5px;font-size:14px}.wordmark>svg{width:18px}.workspace-actions,.header-actions{gap:2px}.workspace-actions button{gap:0;width:32px;min-height:36px;padding:0;font-size:0}.header-actions .icon-button{width:32px}.game-dock{padding-inline:8px}.trash-bin{min-width:102px}}.page-turn-overlay[data-live-ready=false]{visibility:hidden}.page-turn-overlay[data-live-ready=false] .turning-leaf,.page-turn-overlay[data-live-ready=false] .turn-face:after,.page-turn-overlay[data-live-ready=false] .turn-shadow{animation-play-state:paused!important}
