*,:after,:before{box-sizing:border-box;margin:0;padding:0}body{background:#EFEFED;min-height:100svh;font-family:Crimson Pro,Georgia,serif;color:#1E2A28}.letterhead{position:fixed;top:22px;left:26px;width:116px;z-index:20;pointer-events:none;opacity:.88}.chat{min-height:100svh;padding:108px clamp(24px,10vw,164px) 190px;max-width:860px;margin:0 auto}.msg{margin-bottom:2.2em;max-width:70%;font-size:clamp(16px,1.85vw,19px);font-weight:200;line-height:1.78;letter-spacing:.012em;word-wrap:break-word;white-space:pre-wrap;filter:url(#inkbleed)}.msg.ai{margin-right:auto;text-align:left}.msg.user{margin-left:auto;text-align:right}.fade{height:190px;background:linear-gradient(transparent,#EFEFED 52%);pointer-events:none;z-index:5}.fade,.input-wrap{position:fixed;bottom:0;left:0;right:0}.input-wrap{z-index:10;display:flex;justify-content:center;padding-bottom:env(safe-area-inset-bottom)}.input-inner{width:100%;max-width:860px;padding:0 clamp(24px,10vw,164px) 28px}textarea{display:block;width:100%;background:transparent;border:none;outline:none;resize:none;font-family:Crimson Pro,Georgia,serif;font-size:clamp(16px,1.85vw,19px);font-weight:200;color:#1E2A28;line-height:1.78;letter-spacing:.012em;caret-color:#1E2A28;overflow:hidden}textarea::placeholder{color:#1E2A28;opacity:.32}textarea:disabled{opacity:.4;cursor:default}.input-hint{text-align:right;font-size:11px}.input-hint,.send-btn{font-weight:300;letter-spacing:.18em;text-transform:uppercase;color:#1E2A28;opacity:.26;margin-top:10px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.send-btn{display:none;background:none;border:none;cursor:pointer;font-family:Crimson Pro,Georgia,serif;font-size:13px;padding:4px 0;float:right}.send-btn:active{opacity:.7}@media (max-width:640px){.msg,textarea{font-size:20px}}@media (hover:none){.input-hint{display:none}.send-btn{display:block}.input-inner{padding-bottom:calc(20px + env(safe-area-inset-bottom))}.fade{height:calc(160px + env(safe-area-inset-bottom));background:linear-gradient(transparent,#EFEFED 45%)}}.corner{position:fixed;top:18px;right:18px;width:26px;height:26px;cursor:pointer;z-index:50;color:#1E2A28;opacity:0}.corner:hover{opacity:.32}.corner:active{opacity:.6}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.corner:hover svg{animation:spin .8s steps(5,jump-none) infinite}