.app-frame{height:100%;display:flex;flex-direction:column;background:var(--bg);position:relative}.app-scroll{flex:1;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}:root{--bg: oklch(.962 .013 82);--surface: oklch(.988 .009 85);--ink: oklch(.34 .02 62);--ink-strong: oklch(.27 .022 62);--line: oklch(.88 .013 80);--gold: oklch(.7 .115 75);--gold-text: oklch(.55 .12 65);--canvas-w: 412px;--canvas-h: 892px;--font-display: "Marcellus", Georgia, serif;--font-ui: "Hanken Grotesk", system-ui, sans-serif;--font-arabic: "Amiri", serif;font-family:var(--font-ui);color:var(--ink);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}*{box-sizing:border-box}html,body{margin:0;padding:0;min-height:100%}body{background:radial-gradient(120% 90% at 50% 0%,#efe7d9,#e4ddd1);min-height:100vh;min-height:100dvh}#root{min-height:100vh;min-height:100dvh}.app-shell{display:flex;align-items:center;justify-content:center;min-height:100vh;min-height:100dvh;padding:16px}.app-canvas{position:relative;width:var(--canvas-w);height:var(--canvas-h);max-width:100%;max-height:calc(100dvh - 32px);background:var(--bg);border-radius:28px;overflow:hidden;box-shadow:0 1px 2px #6f61511f,0 30px 60px -28px #64523d73}@media(max-width:460px){.app-shell{padding:0}.app-canvas{width:100%;height:100dvh;max-height:none;border-radius:0;box-shadow:none}}h1,h2,h3{font-family:var(--font-display);font-weight:400;color:var(--ink-strong);margin:0}button{font-family:inherit}[dir=rtl],.arabic{font-family:var(--font-arabic)}@keyframes splashIn{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}@keyframes sheetUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes pinShake{0%,to{transform:translate(0)}20%{transform:translate(-8px)}40%{transform:translate(8px)}60%{transform:translate(-5px)}80%{transform:translate(5px)}}.pin-shake{animation:pinShake .38s ease}@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
