body.letter-mode .page-wrapper{height:100vh;height:100dvh;min-height:0;overflow:hidden}body.letter-mode .sidebar{display:none}body.letter-mode .main-content{flex:auto;display:flex;flex-direction:column;min-height:0;max-width:none;width:100%;margin-right:0;padding:0}body.letter-mode .site-footer{display:none}.letter-shell{--lt-rail-bg:color-mix(in srgb, var(--color-surface) 72%, transparent);--lt-paper:var(--color-surface);--lt-rule:color-mix(in srgb, var(--color-ink) 14%, transparent);--lt-rule-strong:color-mix(in srgb, var(--color-brand) 38%, transparent);--lt-accent:var(--color-brand);--lt-accent-soft:var(--color-brand-soft);--lt-writer-goal:20000;--lt-ink-muted:var(--color-ink-3);height:100vh;height:100dvh;overflow:hidden;display:flex;flex-direction:column;font-family:var(--font-serif)}:root[data-theme=dark] .letter-shell{--lt-paper:color-mix(in srgb, var(--color-surface) 92%, var(--color-ink) 8%);--lt-ink-muted:var(--color-ink-2)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .letter-shell{--lt-paper:color-mix(in srgb, var(--color-surface) 92%, var(--color-ink) 8%);--lt-ink-muted:var(--color-ink-2)}}.letter-shell{--lt-bar:color-mix(in srgb, var(--color-ink) 26%, transparent);--lt-bar-active:color-mix(in srgb, var(--color-ink) 48%, transparent)}.lt-bars-ready .lt-scroll,.lt-bars-ready .lt-editor .overtype-input,.lt-bars-ready .lt-editor .overtype-preview{scrollbar-width:none!important;-ms-overflow-style:none}.lt-bars-ready .lt-scroll::-webkit-scrollbar,.lt-bars-ready .lt-editor .overtype-input::-webkit-scrollbar,.lt-bars-ready .lt-editor .overtype-preview::-webkit-scrollbar{width:0;height:0;display:none;background:0 0}.lt-bars-ready .lt-scroll::-webkit-scrollbar-track,.lt-bars-ready .lt-scroll::-webkit-scrollbar-thumb,.lt-bars-ready .lt-scroll::-webkit-scrollbar-button,.lt-bars-ready .lt-editor .overtype-input::-webkit-scrollbar-track,.lt-bars-ready .lt-editor .overtype-input::-webkit-scrollbar-thumb,.lt-bars-ready .lt-editor .overtype-input::-webkit-scrollbar-button,.lt-bars-ready .lt-editor .overtype-preview::-webkit-scrollbar-track,.lt-bars-ready .lt-editor .overtype-preview::-webkit-scrollbar-thumb,.lt-bars-ready .lt-editor .overtype-preview::-webkit-scrollbar-button{width:0;height:0;display:none;background:0 0;border:none}.lt-bar{position:fixed;width:10px;z-index:45;pointer-events:none;opacity:0;transition:opacity var(--duration-normal)var(--ease-out)}.lt-bar.is-on{opacity:1}.lt-bar:focus-visible{opacity:1;outline:none}.lt-bar:focus-visible .lt-bar-thumb{outline:2px solid var(--lt-accent);outline-offset:1px}.lt-bar-thumb{position:absolute;left:4px;width:4px;border-radius:2px;background:var(--lt-bar);pointer-events:auto;cursor:default;transition:background-color var(--duration-fast)var(--ease-out),width var(--duration-fast)var(--ease-out),left var(--duration-fast)var(--ease-out)}.lt-bar:hover .lt-bar-thumb,.lt-bar.is-drag .lt-bar-thumb{background:var(--lt-bar-active);width:6px;left:3px}.lt-bar.is-drag{user-select:none}.lt-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.letter-topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:var(--s-4);padding:var(--s-3)var(--s-5);background:color-mix(in srgb,var(--color-bg) 86%,transparent);backdrop-filter:blur(10px);border-bottom:var(--border-width)solid var(--color-line-light)}.lt-brand{display:flex;align-items:baseline;gap:var(--s-2);margin-right:auto}.lt-brand-name{font-family:var(--font-serif-heading);font-size:var(--text-h4);font-weight:var(--weight-bold);color:var(--color-ink);letter-spacing:.06em}.lt-brand-sub{font-size:var(--text-caption);color:var(--lt-ink-muted);letter-spacing:.12em}.lt-modes{display:flex;background:var(--lt-rail-bg);border:var(--border-width)solid var(--color-line);border-radius:var(--r-md);padding:3px}.lt-modes button{border:none;background:0 0;color:var(--color-ink-2);font-family:var(--font-serif);font-size:var(--text-body-sm);padding:4px var(--s-4);border-radius:var(--r-sm);cursor:pointer;transition:background var(--duration-fast)var(--ease-out),color var(--duration-fast)var(--ease-out)}.lt-modes button:hover{color:var(--color-ink)}.lt-modes button[aria-pressed=true]{background:var(--color-ink);color:var(--color-bg)}.lt-top-actions{display:flex;align-items:center;gap:var(--s-3)}.lt-save-hint{display:flex;align-items:center;gap:6px;font-size:var(--text-caption);color:var(--lt-ink-muted);min-width:6em;justify-content:flex-end;white-space:nowrap}.lt-save-dot{width:6px;height:6px;border-radius:50%;background:var(--lt-ink-muted);transition:background var(--duration-fast)var(--ease-out)}.lt-save-hint[data-state=saving] .lt-save-dot{background:var(--lt-accent);animation:lt-pulse 1s var(--ease-out)infinite}@keyframes lt-pulse{50%{opacity:.3}}.lt-icon-btn{width:34px;height:34px;display:grid;place-items:center;border:var(--border-width)solid var(--color-line);border-radius:var(--r-md);background:var(--lt-rail-bg);color:var(--color-ink-2);font-size:var(--text-body);cursor:pointer;transition:color var(--duration-fast)var(--ease-out),border-color var(--duration-fast)var(--ease-out)}.lt-icon-btn:hover{color:var(--lt-accent);border-color:var(--lt-accent)}.lt-icon-btn:focus-visible{outline:2px solid var(--lt-accent);outline-offset:2px}.letter-layout{flex:auto;min-height:0;display:grid;grid-template-columns:250px minmax(0,1fr)440px;grid-template-rows:minmax(0,1fr);gap:var(--s-5);width:100%;max-width:1560px;margin:0 auto;padding:var(--s-5);align-items:stretch}.letter-shell[data-mode=write] .letter-layout{grid-template-columns:minmax(0,1fr)}.letter-shell[data-mode=write] .letter-preview,.letter-shell[data-mode=write] .lt-rail{display:none}.letter-shell[data-mode=preview] .letter-layout{grid-template-columns:minmax(0,1fr)}.letter-shell[data-mode=preview] .lt-rail,.letter-shell[data-mode=preview] .letter-stage{display:none}.letter-shell[data-mode=preview] .letter-preview{width:100%;max-width:720px;justify-self:center}.lt-rail{display:flex;flex-direction:column;gap:var(--s-4);min-height:0;overflow-y:auto;font-family:var(--font-serif)}.lt-rail>.lt-card{flex:none}.lt-card{background:var(--lt-rail-bg);border:var(--border-width)solid var(--color-line);border-radius:var(--r-md);padding:var(--s-4)}.lt-card-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--s-3);font-size:var(--text-caption);font-weight:var(--weight-normal);letter-spacing:.22em;color:var(--lt-ink-muted)}.lt-box-count:not(:empty){margin-left:var(--s-2);margin-right:auto;padding:0 5px;border-radius:999px;background:var(--color-brand-soft);color:var(--color-brand);font-size:11px;letter-spacing:0;line-height:1.6}.lt-card-tools{display:flex;gap:var(--s-3)}.lt-mini{border:none;background:0 0;padding:6px 2px;font-family:var(--font-serif);font-size:var(--text-caption);color:var(--lt-ink-muted);cursor:pointer;letter-spacing:.05em;transition:color var(--duration-fast)var(--ease-out)}.lt-mini:hover{color:var(--lt-accent)}.lt-mini:focus-visible{outline:2px solid var(--lt-accent);outline-offset:2px;border-radius:var(--r-sm)}.lt-field{margin-bottom:var(--s-3)}.lt-field:last-child{margin-bottom:0}.lt-field label{display:block;margin-bottom:5px;font-size:var(--text-caption);color:var(--color-ink-2);letter-spacing:.08em}.lt-field input{width:100%;padding:6px var(--s-3);border:var(--border-width)solid var(--color-line);border-radius:var(--r-sm);background:var(--color-bg);color:var(--color-ink);font-family:var(--font-serif);font-size:var(--text-body-sm);box-sizing:border-box;transition:border-color var(--duration-fast)var(--ease-out)}.lt-field input:focus-visible,.lt-title-input:focus-visible,.lt-salute input:focus-visible{outline:2px solid var(--lt-accent);outline-offset:2px;border-radius:var(--r-sm)}.lt-field input:focus{border-color:var(--lt-accent)}.lt-field input::placeholder{color:var(--lt-ink-muted)}.lt-stats{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-2)var(--s-3)}.lt-stat-num{font-size:var(--text-h4);font-weight:var(--weight-bold);color:var(--color-ink);font-variant-numeric:tabular-nums}.lt-stat-label{margin-top:2px;font-size:var(--text-caption);color:var(--lt-ink-muted);letter-spacing:.1em}.lt-progress{height:3px;margin-top:var(--s-3);border-radius:2px;background:var(--color-line);overflow:hidden}.lt-progress i{display:block;height:100%;width:0;border-radius:2px;background:var(--lt-accent);transition:width var(--duration-normal)var(--ease-out)}.lt-progress-note{margin-top:6px;font-size:var(--text-caption);color:var(--lt-ink-muted)}.lt-progress-note.is-over{color:var(--lt-accent)}.lt-archive{list-style:none;max-height:320px;overflow-y:auto}.lt-archive li{position:relative;padding:var(--s-2)var(--s-5)var(--s-2)2px;border-top:1px dashed var(--color-line);cursor:pointer}.lt-archive li:first-child{border-top:none}.lt-archive li:hover .lt-arc-title{color:var(--lt-accent)}.lt-archive li.is-current .lt-arc-title{color:var(--lt-accent)}.lt-archive li.is-current{border-left:2px solid var(--lt-accent);padding-left:var(--s-2);margin-left:calc(-1 * var(--s-2))}.lt-arc-title{display:block;font-size:var(--text-body-sm);font-weight:var(--weight-semibold);color:var(--color-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lt-arc-meta{display:flex;gap:var(--s-2);margin-top:3px;font-size:var(--text-caption);color:var(--lt-ink-muted)}.lt-arc-del{position:absolute;top:4px;right:0;width:24px;height:24px;display:grid;place-items:center;padding:0;border:none;background:0 0;color:var(--lt-ink-muted);font-size:var(--text-caption);line-height:1;cursor:pointer;opacity:0;transition:opacity var(--duration-fast)var(--ease-out),color var(--duration-fast)var(--ease-out)}.lt-archive li:hover .lt-arc-del,.lt-arc-del:focus-visible{opacity:1}.lt-arc-del:hover{color:var(--lt-accent)}.lt-arc-del:focus-visible{outline:2px solid var(--lt-accent);outline-offset:-2px;border-radius:var(--r-sm);color:var(--lt-accent)}.lt-arc-empty{padding:6px 0;font-size:var(--text-caption);color:var(--lt-ink-muted);line-height:var(--leading-normal)}.lt-arc-more{margin-top:var(--s-2);padding-top:var(--s-2);border-top:1px dashed var(--color-line);font-size:var(--text-caption);color:var(--lt-ink-muted);line-height:var(--leading-normal)}.lt-arc-more[hidden]{display:none}.letter-stage{display:flex;flex-direction:column;min-height:0}.letter-paper{position:relative;display:flex;flex-direction:column;width:100%;max-width:680px;margin:0 auto;min-height:0;flex:auto;background:var(--lt-paper);border:var(--border-width)solid var(--color-line);border-radius:var(--r-sm);box-shadow:0 1px 2px rgba(0,0,0,5%),0 12px 40px rgba(0,0,0,7%);overflow:hidden}.letter-shell[data-sheet=zhu]{--lt-sheet-bg:color-mix(in srgb, #fbf9f4 55%, var(--lt-paper));--lt-rule:color-mix(in srgb, var(--color-ink) 11%, transparent);--lt-rule-strong:color-mix(in srgb, var(--color-brand) 42%, transparent)}.letter-shell[data-sheet=wu]{--lt-sheet-bg:color-mix(in srgb, #fbf9f4 55%, var(--lt-paper));--lt-rule:color-mix(in srgb, var(--color-ink) 11%, transparent);--lt-rule-strong:color-mix(in srgb, var(--color-ink) 42%, transparent)}.letter-shell[data-sheet=su]{--lt-sheet-bg:var(--lt-paper)}:root[data-theme=dark] .letter-shell[data-sheet=zhu],:root[data-theme=dark] .letter-shell[data-sheet=wu]{--lt-sheet-bg:color-mix(in srgb, var(--lt-paper) 88%, #2b2a26 12%);--lt-rule:color-mix(in srgb, var(--color-ink) 12%, transparent)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .letter-shell[data-sheet=zhu],:root:not([data-theme=light]) .letter-shell[data-sheet=wu]{--lt-sheet-bg:color-mix(in srgb, var(--lt-paper) 88%, #2b2a26 12%);--lt-rule:color-mix(in srgb, var(--color-ink) 12%, transparent)}}.letter-shell[data-sheet=zhu] .letter-paper,.letter-shell[data-sheet=wu] .letter-paper,.letter-shell[data-sheet=su] .letter-paper{background:var(--lt-sheet-bg)}.letter-shell[data-sheet=zhu] .letter-preview,.letter-shell[data-sheet=wu] .letter-preview,.letter-shell[data-sheet=su] .letter-preview{background:var(--lt-sheet-bg)}.letter-shell[data-sheet=su] .letter-paper::before{display:none}.letter-shell[data-sheet=su] .lt-editor .overtype-wrapper{background-image:none!important}.lt-sheet-switch{position:absolute;right:var(--s-4);bottom:var(--s-4);z-index:30}.lt-sheet-btn{width:32px;height:32px;display:grid;place-items:center;border:var(--border-width)solid var(--color-line);border-radius:50%;background:var(--color-surface);color:var(--color-ink-2);font-family:var(--font-serif);font-size:var(--text-caption);cursor:pointer;box-shadow:0 1px 4px rgba(0,0,0,8%);transition:color var(--duration-fast)var(--ease-out),border-color var(--duration-fast)var(--ease-out)}.lt-sheet-btn:hover{color:var(--lt-accent);border-color:var(--lt-accent)}.lt-sheet-btn:focus-visible{outline:2px solid var(--lt-accent);outline-offset:2px;color:var(--lt-accent);border-color:var(--lt-accent)}.lt-sheet-pop{position:absolute;bottom:calc(100% + var(--s-2));right:0;display:flex;gap:4px;padding:5px;background:var(--color-surface);border:var(--border-width)solid var(--color-line);border-radius:var(--r-md);box-shadow:0 3px 10px rgba(0,0,0,.1);opacity:0;visibility:hidden;transform:translateY(4px);transition:opacity var(--duration-fast)var(--ease-out),transform var(--duration-fast)var(--ease-out),visibility var(--duration-fast)var(--ease-out)}.lt-sheet-switch:hover .lt-sheet-pop,.lt-sheet-pop:focus-within{opacity:1;visibility:visible;transform:translateY(0)}.lt-sheet-opt{position:relative;width:44px;height:44px;padding:0;border:var(--border-width)solid var(--color-line);border-radius:var(--r-sm);background:var(--color-surface);cursor:pointer;clip-path:polygon(0 18%,50% 0,100% 18%,100% 100%,0 100%);overflow:hidden}.lt-sheet-opt:hover{border-color:var(--lt-accent)}.lt-sheet-opt:focus-visible{outline:2px solid var(--lt-accent);outline-offset:2px}.lt-sheet-opt[aria-pressed=true]{border-color:var(--lt-accent);box-shadow:0 0 0 2px var(--lt-accent-soft)}.lt-sheet-opt::before{content:'';position:absolute;top:0;left:0;right:0;height:22px;background:var(--color-surface)}.lt-sheet-opt[data-sheet=zhu]::before{background:color-mix(in srgb,#f7f0dc 78%,#fff)}.lt-sheet-opt[data-sheet=wu]::before{background:color-mix(in srgb,#f4f1e8 82%,#fff)}.lt-sheet-opt[data-sheet=su]::before{background:var(--color-surface)}.lt-sheet-opt::after{content:'';position:absolute;top:3px;bottom:22px;left:16px;width:1px}.lt-sheet-opt[data-sheet=zhu]::after{background:var(--color-brand)}.lt-sheet-opt[data-sheet=wu]::after{background:var(--color-ink-2)}.lt-sheet-opt[data-sheet=su]::after{display:none}.lt-sheet-opt-name{position:absolute;left:0;right:0;bottom:5px;font-family:var(--font-serif);font-size:11px;line-height:1;letter-spacing:.06em;color:var(--lt-ink-muted);text-align:center;pointer-events:none}.lt-sheet-opt[aria-pressed=true] .lt-sheet-opt-name{color:var(--lt-accent)}.letter-paper-head{position:relative;flex:none;padding:var(--s-5)var(--s-7)0}.lt-title-input{width:100%;border:none;background:0 0;color:var(--color-ink);font-family:var(--font-serif-heading);font-size:var(--text-h4);font-weight:var(--weight-bold);letter-spacing:var(--tracking-wide);padding:0 0 var(--s-2)}.lt-title-input::placeholder{color:var(--lt-ink-muted);font-weight:var(--weight-normal)}.lt-salute{display:flex;align-items:baseline;gap:var(--s-3);padding-bottom:var(--s-3)}.lt-salute-label{flex:none;font-size:var(--text-caption);letter-spacing:.22em;color:var(--lt-ink-muted)}.lt-salute input{flex:auto;min-width:0;border:none;border-bottom:1.5px solid var(--lt-rule-strong);background:0 0;color:var(--lt-accent);font-family:var(--font-serif);font-size:var(--text-body);font-weight:var(--weight-semibold);padding:0 4px 2px}.lt-salute input::placeholder{font-weight:var(--weight-normal);color:var(--lt-ink-muted)}.lt-help-wrap{position:absolute;top:var(--s-5);right:var(--s-5);z-index:10010}.lt-help-btn{width:24px;height:24px;display:grid;place-items:center;padding:0;border:var(--border-width)solid var(--color-line);border-radius:50%;background:0 0;color:var(--lt-ink-muted);font-family:var(--font-serif);font-size:var(--text-caption);cursor:help;transition:color var(--duration-fast)var(--ease-out),border-color var(--duration-fast)var(--ease-out)}.lt-help-wrap:hover .lt-help-btn{color:var(--lt-accent);border-color:var(--lt-accent)}.lt-help-btn:focus-visible{outline:2px solid var(--lt-accent);outline-offset:2px;color:var(--lt-accent);border-color:var(--lt-accent)}.lt-help-pop{position:absolute;top:calc(100% + var(--s-2));right:0;z-index:10011;width:300px;padding:var(--s-3)var(--s-4);background:var(--color-surface);border:var(--border-width)solid var(--color-line);border-radius:var(--r-md);box-shadow:0 3px 10px rgba(0,0,0,8%);opacity:0;visibility:hidden;transform:translateY(-4px);transition:opacity var(--duration-fast)var(--ease-out),transform var(--duration-fast)var(--ease-out),visibility var(--duration-fast)var(--ease-out)}.lt-help-pop::before{content:'';position:absolute;top:-5px;right:12px;width:9px;height:9px;background:var(--color-surface);border-left:var(--border-width)solid var(--color-line);border-top:var(--border-width)solid var(--color-line);transform:rotate(45deg)}.lt-help-wrap:hover .lt-help-pop,.lt-help-wrap:focus-within .lt-help-pop{opacity:1;visibility:visible;transform:translateY(0)}.lt-help-title{margin:0 0 var(--s-2);font-size:var(--text-caption);font-weight:var(--weight-normal);letter-spacing:.16em;color:var(--lt-ink-muted)}.lt-help-pop table{width:100%;border-collapse:collapse}.lt-help-pop td{padding:3px 0;font-size:var(--text-caption);color:var(--color-ink-2);vertical-align:middle}.lt-help-pop td:first-child{width:46%}.lt-help-pop code{padding:1px 5px;border-radius:var(--r-sm);background:var(--lt-accent-soft);color:var(--lt-accent);font-family:var(--font-mono);font-size:11px}.lt-help-note{margin-top:var(--s-3);font-size:var(--text-caption);color:var(--lt-ink-muted)}.lt-help-link{display:inline-block;margin-top:var(--s-2);font-size:var(--text-caption);color:var(--lt-accent);text-decoration:none;border-bottom:1px solid var(--lt-accent-soft)}.lt-help-link:hover{border-bottom-color:var(--lt-accent)}.letter-paper-body{position:relative;flex:auto;min-height:0;display:flex;flex-direction:column;--lt-line:36px}.letter-paper::before{content:'';position:absolute;top:0;bottom:0;left:26px;width:1px;background:var(--lt-rule-strong);pointer-events:none;z-index:1}.lt-editor{flex:auto;min-height:0;display:flex;flex-direction:column}.lt-editor .overtype-container{height:100%;min-height:0}.lt-editor .overtype-wrapper{border:none;background:0 0!important;min-height:0;overflow:hidden}.lt-editor .overtype-input,.lt-editor .overtype-preview{overflow-y:auto;overflow-x:hidden}.lt-editor .overtype-wrapper{background-image:repeating-linear-gradient( to bottom,transparent 0,transparent calc(var(--lt-line,36px) - 1px),var(--lt-rule) calc(var(--lt-line,36px) - 1px),var(--lt-rule) var(--lt-line,36px) );background-repeat:repeat-y;background-position:0 0}.lt-editor .overtype-input,.lt-editor .overtype-preview{background-color:initial;background-image:none;caret-color:var(--lt-accent)}.lt-editor .overtype-preview{pointer-events:none}.lt-editor .overtype-input:focus,.lt-editor .overtype-preview:focus{outline:none}.lt-editor .overtype-input::placeholder,.lt-editor textarea::placeholder{color:transparent!important;opacity:1!important}.lt-editor .overtype-placeholder{white-space:pre-wrap;color:var(--lt-ink-muted)}.lt-editor .overtype-toolbar{border-bottom:0!important;background:0 0!important;padding:var(--s-2)41px!important;gap:2px!important;z-index:5!important}.lt-editor .overtype-toolbar-dropdown,.lt-editor .overtype-dropdown,.lt-editor .overtype-toolbar-menu,.lt-editor .overtype-menu{z-index:6!important}.lt-editor .overtype-toolbar-button{color:var(--color-ink-2);border-radius:var(--r-sm)}.lt-editor .overtype-toolbar-button:hover{background:var(--lt-accent-soft);color:var(--lt-accent)}.letter-paper-foot{display:flex;flex:none;align-items:center;justify-content:space-between;gap:var(--s-4);padding:var(--s-3)var(--s-7)var(--s-4);border-top:var(--border-width)solid var(--color-line)}.lt-foot-hint{font-size:var(--text-caption);color:var(--lt-ink-muted);letter-spacing:.06em}.lt-send-btn{padding:var(--s-2)var(--s-6);border:none;border-radius:var(--r-md);background:var(--lt-accent);color:#fff;font-family:var(--font-serif);font-size:var(--text-body-sm);letter-spacing:.28em;cursor:pointer;transition:opacity var(--duration-fast)var(--ease-out),transform var(--duration-fast)var(--ease-out)}.lt-send-btn:hover{opacity:.88;transform:translateY(-1px)}.lt-send-btn:focus-visible{outline:2px solid var(--lt-accent);outline-offset:3px}.lt-send-btn:disabled{opacity:.5;cursor:default;transform:none}.letter-preview{display:flex;flex-direction:column;min-height:0;background:var(--lt-rail-bg);border:var(--border-width)solid var(--color-line);border-radius:var(--r-md);overflow:hidden}.letter-preview-head{flex:none;padding:var(--s-5)var(--s-5)var(--s-3);border-bottom:var(--border-width)solid var(--color-line);text-align:left}.lt-preview-kicker{font-size:var(--text-caption);letter-spacing:.24em;color:var(--lt-ink-muted);text-align:left}.lt-preview-title{margin-top:6px;font-family:var(--font-serif-heading);font-size:var(--text-h4);font-weight:var(--weight-bold);color:var(--color-ink);text-align:left}.lt-preview-sub{margin-top:4px;font-size:var(--text-body-sm);color:var(--color-ink-2);text-align:left}.letter-preview-scroll{flex:auto;min-height:0;overflow-y:auto;padding:var(--s-5)var(--s-5)var(--s-6);text-align:left}.lt-body{font-size:var(--text-body);line-height:var(--leading-relaxed);color:var(--color-ink);word-break:break-word}.lt-body p{margin:0 0 1.1em}.lt-body p.lt-salutation{margin-bottom:1.6em}.lt-body :is(h1,h2,h3){margin:1.4em 0 .7em;font-family:var(--font-serif-heading);font-weight:var(--weight-semibold);line-height:1.5}.lt-body h1{font-size:var(--text-h3)}.lt-body h2{font-size:var(--text-h4)}.lt-body h3{font-size:var(--text-body)}.lt-body blockquote{margin:1em 0;padding:2px var(--s-4);border-left:3px solid var(--lt-rule-strong);background:color-mix(in srgb,var(--lt-accent) 4%,transparent);color:var(--color-ink-2)}.lt-body :is(ul,ol){margin:0 0 1em;padding-left:2.4em}.lt-body li{margin:var(--s-1)0}.lt-body pre{margin:0 0 1.1em;padding:var(--s-3)var(--s-4);border:var(--border-width)solid var(--color-line);border-radius:var(--r-md);background:var(--color-code-bg);overflow-x:auto}.lt-body code{font-family:var(--font-mono);font-size:var(--text-code)}.lt-body :is(p,li) code{padding:1px 5px;border-radius:var(--r-sm);background:var(--lt-accent-soft);color:var(--lt-accent)}.lt-body pre code{padding:0;background:0 0;color:var(--color-ink);white-space:pre}.lt-body a{color:var(--lt-accent);text-decoration:underline;text-underline-offset:3px}.lt-body img{max-width:100%;border-radius:var(--r-md);margin:var(--s-2)0}.lt-body hr{width:60%;margin:1.8em auto;border:none;border-top:1px dashed var(--color-line)}.lt-body del{color:var(--lt-ink-muted)}.lt-body .lt-empty{color:var(--lt-ink-muted);font-size:var(--text-body)}.lt-sign{margin-top:2.4em;text-align:right;font-size:var(--text-body);color:var(--color-ink-2);line-height:var(--leading-normal)}.lt-sent{position:fixed;inset:0;z-index:100;display:none;place-items:center;background:color-mix(in srgb,var(--color-bg) 88%,transparent);backdrop-filter:blur(8px)}.lt-sent.is-open{display:grid}.lt-sent-stage{text-align:center;font-family:var(--font-serif)}.lt-sent-scene{position:relative;width:320px;height:190px;margin:0 auto var(--s-5);opacity:0}.lt-sent.is-play .lt-sent-scene{animation:lt-scene-in 360ms var(--ease-out)forwards}@keyframes lt-scene-in{to{opacity:1}}.lt-postbox{position:absolute;right:0;bottom:0;width:96px;height:150px}.lt-postbox-body{position:absolute;left:8px;right:8px;top:30px;bottom:18px;border-radius:10px 10px 4px 4px;background:linear-gradient( to right,color-mix(in srgb,var(--lt-accent) 78%,#000 6%),var(--lt-accent) 42%,color-mix(in srgb,var(--lt-accent) 72%,#000 8%) );box-shadow:inset 0 -6px 12px rgba(0,0,0,.18),0 8px 20px rgba(0,0,0,.12)}.lt-postbox-lid{position:absolute;left:2px;right:2px;top:12px;height:30px;border-radius:14px 14px 3px 3px;background:color-mix(in srgb,var(--lt-accent) 86%,#000 4%);box-shadow:inset 0 3px 6px rgba(255,255,255,.16);transform-origin:50% 100%;transition:transform 220ms var(--ease-out)}.lt-sent.is-drop .lt-postbox-lid{transform:rotate(-8deg)translateY(-2px)}.lt-postbox-slot{position:absolute;left:18px;right:18px;top:36px;height:6px;border-radius:3px;background:rgba(0,0,0,.4);box-shadow:inset 0 2px 4px rgba(0,0,0,.5)}.lt-postbox-leg{position:absolute;bottom:0;width:10px;height:20px;border-radius:0 0 4px 4px;background:color-mix(in srgb,var(--lt-accent) 70%,#000 12%)}.lt-postbox-leg-l{left:18px}.lt-postbox-leg-r{right:18px}.lt-sent.is-drop .lt-postbox{animation:lt-postbox-nudge 420ms 260ms var(--ease-out)}@keyframes lt-postbox-nudge{0%,100%{transform:rotate(0)}30%{transform:rotate(-1.6deg)}65%{transform:rotate(1deg)}}.lt-fly{position:absolute;left:6px;bottom:24px;width:116px;height:74px;--fly-x:150px;--fly-y:-46px}.lt-fly-letter{position:absolute;left:20px;right:20px;bottom:46px;height:64px;border-radius:3px;background:var(--lt-paper);border:var(--border-width)solid var(--color-line);box-shadow:0 -2px 8px rgba(0,0,0,6%);transform-origin:50% 100%;transform:translateY(38px)scaleY(1);opacity:0}.lt-fly-letter::after{content:'';position:absolute;inset:10px 12px auto;height:2px;background:repeating-linear-gradient(to bottom,var(--lt-rule) 0 2px,transparent 2px 8px)}.lt-fly-env{position:absolute;left:0;bottom:0;width:116px;height:62px;border-radius:5px;background:color-mix(in srgb,var(--lt-paper) 92%,var(--lt-accent) 8%);border:var(--border-width)solid var(--color-line);box-shadow:0 6px 16px rgba(0,0,0,.14);opacity:0}.lt-fly-env::before{content:'';position:absolute;inset:0;border-radius:5px;background:linear-gradient(to bottom right,transparent 49.5%,var(--color-line) 49.5%,var(--color-line) 50.5%,transparent 50.5%),linear-gradient(to bottom left,transparent 49.5%,var(--color-line) 49.5%,var(--color-line) 50.5%,transparent 50.5%)}.lt-fly-flap{position:absolute;left:0;right:0;top:0;height:60%;background:linear-gradient(to bottom right,transparent 49.5%,var(--color-line) 49.5%,var(--color-line) 50.5%,transparent 50.5%),linear-gradient(to bottom left,transparent 49.5%,var(--color-line) 49.5%,var(--color-line) 50.5%,transparent 50.5%);transform-origin:50% 100%;transition:transform 260ms var(--ease-out)}.lt-sent.is-fly .lt-fly-flap{transform:rotateX(0)}.lt-fly-seal{position:absolute;left:50%;top:46%;width:26px;height:26px;display:grid;place-items:center;border-radius:50%;background:var(--lt-accent);color:#fff6ef;font-size:var(--text-caption);font-weight:var(--weight-bold);transform:translate(-50%,-50%)scale(0);box-shadow:inset 0 -2px 4px rgba(0,0,0,.28)}.lt-sent.is-roll .lt-fly-letter{animation:lt-letter-roll 420ms cubic-bezier(.4,.05,.2,1)forwards}@keyframes lt-letter-roll{0%{opacity:0;transform:translateY(38px)scaleY(1)}35%{opacity:1;transform:translateY(0)scaleY(1)}100%{opacity:1;transform:translateY(30px)scaleY(.16)}}.lt-sent.is-roll .lt-fly-env{animation:lt-env-in 220ms 300ms var(--ease-out)forwards}@keyframes lt-env-in{to{opacity:1}}.lt-sent.is-roll .lt-fly-seal{animation:lt-seal 420ms 340ms cubic-bezier(.3,1.6,.5,1)forwards}@keyframes lt-seal{0%{transform:translate(-50%,-50%)scale(2.4)rotate(14deg);opacity:0}60%{opacity:1}100%{transform:translate(-50%,-50%)scale(1)rotate(-6deg);opacity:1}}.lt-sent.is-fly .lt-fly{animation:lt-fly-to-box 620ms cubic-bezier(.5,0,.75,.2)forwards}@keyframes lt-fly-to-box{0%{transform:translate(0,0)rotate(0)scale(1)}45%{transform:translate(calc(var(--fly-x) * .5),calc(var(--fly-y) - 26px))rotate(-9deg)scale(.9)}100%{transform:translate(var(--fly-x),var(--fly-y))rotate(-4deg)scale(.84);opacity:1}}.lt-sent.is-drop .lt-fly{animation:lt-fly-into-slot 380ms cubic-bezier(.4,0,.9,.3)forwards}@keyframes lt-fly-into-slot{0%{transform:translate(var(--fly-x),var(--fly-y))rotate(-4deg)scale(.84);opacity:1}100%{transform:translate(calc(var(--fly-x) + 14px),calc(var(--fly-y) + 4px))rotate(6deg)scale(.62);opacity:0}}.lt-sent-title{opacity:0;font-family:var(--font-serif-heading);font-size:var(--text-h4);font-weight:var(--weight-bold);letter-spacing:.1em;color:var(--color-ink)}.lt-sent-msg{margin-top:var(--s-3);font-size:var(--text-body-sm);line-height:var(--leading-normal);color:var(--color-ink-2);opacity:0}.lt-sent-msg code{padding:1px 5px;border-radius:var(--r-sm);background:var(--lt-accent-soft);color:var(--lt-accent);font-family:var(--font-mono)}.lt-sent-actions{display:flex;justify-content:center;gap:var(--s-3);margin-top:var(--s-6);opacity:0}.lt-sent-actions button{padding:var(--s-2)var(--s-5);border:var(--border-width)solid var(--color-line);border-radius:var(--r-md);background:var(--color-surface);color:var(--color-ink);font-family:var(--font-serif);font-size:var(--text-body-sm);letter-spacing:.12em;cursor:pointer;transition:color var(--duration-fast)var(--ease-out),border-color var(--duration-fast)var(--ease-out)}.lt-sent-actions button:hover{color:var(--lt-accent);border-color:var(--lt-accent)}.lt-sent-actions button:focus-visible{outline:2px solid var(--lt-accent);outline-offset:3px}.lt-sent-actions .is-primary{background:var(--lt-accent);border-color:var(--lt-accent);color:#fff}.lt-sent-actions .is-primary:hover{color:#fff;opacity:.9}.lt-sent.is-play .lt-sent-title{animation:lt-fade-up 460ms 1520ms var(--ease-out)forwards}.lt-sent.is-play .lt-sent-msg{animation:lt-fade-up 460ms 1620ms var(--ease-out)forwards}.lt-sent.is-play .lt-sent-actions{animation:lt-fade-up 460ms 1720ms var(--ease-out)forwards}@keyframes lt-fade-up{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.lt-intro{position:fixed;inset:0;z-index:110;display:none;place-items:center;padding:var(--s-5);background:color-mix(in srgb,var(--color-bg) 92%,transparent);backdrop-filter:blur(10px)}.lt-intro.is-open{display:grid}.lt-intro-stage{position:relative;width:min(100%,620px);display:grid;place-items:center}.lt-intro-env{position:relative;width:260px;height:172px;transition:opacity 320ms var(--ease-out),transform 320ms var(--ease-out)}.lt-intro-pocket{position:absolute;inset:0;overflow:hidden;border-radius:6px}.lt-intro-pocket-body{position:absolute;inset:0;background:color-mix(in srgb,var(--lt-paper) 92%,var(--lt-accent) 8%);border:var(--border-width)solid var(--color-line);border-radius:6px;box-shadow:0 14px 40px rgba(0,0,0,.14)}.lt-intro-pocket-flap{position:absolute;left:0;right:0;top:0;height:52%;background:color-mix(in srgb,var(--lt-paper) 84%,var(--lt-accent) 16%);clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:50% 0;transition:transform 420ms var(--ease-out);z-index:3}.lt-intro-sheet{position:absolute;left:18px;right:18px;bottom:14px;height:120px;border-radius:3px;background:var(--lt-paper);border:var(--border-width)solid var(--color-line);box-shadow:0 -3px 10px rgba(0,0,0,8%);transform-origin:50% 100%;transition:transform 520ms cubic-bezier(.3,.05,.2,1);z-index:1}.lt-intro-sheet::after{content:'';position:absolute;inset:16px 18px auto;height:2px;background:repeating-linear-gradient(to bottom,var(--lt-rule) 0 2px,transparent 2px 10px)}.lt-intro-seal{position:absolute;left:50%;top:46%;width:44px;height:44px;display:grid;place-items:center;border-radius:50%;background:var(--lt-accent);color:#fff6ef;font-size:var(--text-body);font-weight:var(--weight-bold);transform:translate(-50%,-50%)scale(0)rotate(-24deg);box-shadow:inset 0 -3px 6px rgba(0,0,0,.25),0 4px 10px rgba(0,0,0,.2);z-index:4}.lt-intro.is-open .lt-intro-env{animation:lt-intro-drop 520ms var(--ease-out)}@keyframes lt-intro-drop{from{opacity:0;transform:translateY(-22px)scale(.94)}to{opacity:1;transform:none}}.lt-intro.is-open .lt-intro-pocket-flap{animation:lt-intro-flap-open 520ms 240ms var(--ease-out)forwards}@keyframes lt-intro-flap-open{to{transform:rotateX(180deg);opacity:.15}}.lt-intro.is-open .lt-intro-seal{animation:lt-seal 460ms 260ms cubic-bezier(.3,1.6,.5,1)forwards}.lt-intro.is-open.is-out .lt-intro-sheet{transform:translateY(-104px)scaleY(1.35)}.lt-intro.is-open.is-out .lt-intro-env{opacity:0;transform:translateY(28px)scale(.96);pointer-events:none}.lt-intro-letter{grid-area:1/1;width:100%;max-height:min(78vh,720px);display:flex;flex-direction:column;background:var(--lt-paper);border:var(--border-width)solid var(--color-line);border-radius:var(--r-sm);box-shadow:0 18px 60px rgba(0,0,0,.16);overflow:hidden;opacity:0;transform:translateY(16px)scale(.97);transition:opacity 420ms 380ms var(--ease-out),transform 520ms 380ms var(--ease-out);pointer-events:none}.lt-intro.is-out .lt-intro-letter{opacity:1;transform:none;pointer-events:auto;background-image:repeating-linear-gradient( to bottom,transparent 0,transparent calc(36px - 1px),var(--lt-rule) calc(36px - 1px),var(--lt-rule) 36px );background-position:0 36px;background-repeat:repeat-y}.lt-intro-letter-head{flex:none;padding:var(--s-5)var(--s-6)var(--s-3);border-bottom:1px solid var(--color-line-light)}.lt-intro-letter-kicker{font-size:var(--text-caption);letter-spacing:.28em;color:var(--lt-ink-muted)}.lt-intro-letter-title{margin-top:var(--s-2);font-family:var(--font-serif-heading);font-size:var(--text-h3);font-weight:var(--weight-bold);letter-spacing:var(--tracking-wide);color:var(--color-ink)}.lt-intro-letter-body{flex:auto;min-height:0;overflow-y:auto;padding:var(--s-5)var(--s-6)var(--s-4);font-size:var(--text-body);line-height:var(--leading-relaxed);color:var(--color-ink);text-align:left}.lt-intro-letter-body p{margin:0 0 1.1em}.lt-intro-letter-body p:last-child{margin-bottom:0}.lt-intro-letter-foot{flex:none;display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);padding:var(--s-3)var(--s-6)var(--s-5);border-top:1px solid var(--color-line-light)}.lt-intro-sign{font-size:var(--text-body-sm);color:var(--color-ink-2);letter-spacing:.06em}.lt-intro-sign[hidden]{display:none}.lt-intro-close{padding:var(--s-2)var(--s-6);border:none;border-radius:var(--r-md);background:var(--lt-accent);color:#fff;font-family:var(--font-serif);font-size:var(--text-body-sm);letter-spacing:.2em;cursor:pointer;transition:opacity var(--duration-fast)var(--ease-out)}.lt-intro-close:hover{opacity:.88}.lt-intro-close:focus-visible{outline:2px solid var(--lt-accent);outline-offset:3px}.lt-toasts{position:fixed;left:50%;bottom:var(--s-6);z-index:120;display:flex;flex-direction:column;align-items:center;gap:var(--s-2);transform:translateX(-50%)}.lt-toast{display:flex;align-items:center;gap:var(--s-4);padding:var(--s-2)var(--s-5);border-radius:var(--r-md);background:var(--color-ink);color:var(--color-bg);font-family:var(--font-serif);font-size:var(--text-body-sm);box-shadow:0 12px 40px rgba(0,0,0,.15);animation:lt-toast-in var(--duration-normal)var(--ease-out)both}.lt-toast.is-leaving{animation:lt-toast-out var(--duration-normal)var(--ease-out)both}@keyframes lt-toast-in{from{opacity:0;transform:translateY(12px)}}@keyframes lt-toast-out{to{opacity:0;transform:translateY(12px)}}.lt-toast button{border:none;background:0 0;color:var(--color-brand);font-family:var(--font-serif);font-size:var(--text-body-sm);font-weight:var(--weight-bold);letter-spacing:.08em;cursor:pointer}@media screen and (max-width:1240px){.letter-layout{grid-template-columns:230px minmax(0,1fr)}.letter-shell[data-mode=split] .letter-preview{display:none}.letter-shell[data-mode=preview] .letter-preview{display:flex;justify-self:center}}@media screen and (max-width:900px){body.letter-mode .page-wrapper{height:auto;overflow:visible}body.letter-mode .main-content{padding:0}.letter-shell{height:auto;overflow:visible}.letter-layout{grid-template-columns:minmax(0,1fr);grid-template-rows:auto;padding:var(--s-4)var(--s-3)var(--s-7)}.letter-shell[data-mode=split] .letter-stage,.letter-shell[data-mode=write] .letter-stage{display:flex}.lt-rail{order:3;overflow:visible}.letter-paper{flex:none;min-height:60vh}.letter-shell[data-mode=preview] .letter-preview{max-width:none;justify-self:stretch;max-height:70vh}.letter-paper-head{padding-left:var(--s-5);padding-right:var(--s-5)}.lt-editor .overtype-toolbar{padding-left:30px!important;padding-right:var(--s-5)!important}.letter-paper-foot{padding-left:var(--s-5);padding-right:var(--s-5)}.letter-paper::before{left:18px}.lt-help-wrap{top:var(--s-4);right:var(--s-4)}.lt-save-hint{display:none}.lt-brand-sub{display:none}}@media(prefers-reduced-motion:reduce){.lt-sent.is-play .lt-sent-scene,.lt-sent.is-play .lt-sent-title,.lt-sent.is-play .lt-sent-msg,.lt-sent.is-play .lt-sent-actions,.lt-sent.is-roll .lt-fly-letter,.lt-sent.is-roll .lt-fly-env,.lt-sent.is-roll .lt-fly-seal{animation:none;opacity:1;transform:none}.lt-fly-letter{opacity:1;transform:translateY(30px)scaleY(.16)}.lt-fly-env{opacity:1}.lt-fly-seal{transform:translate(-50%,-50%)rotate(-6deg)}.lt-sent.is-fly .lt-fly,.lt-sent.is-drop .lt-fly{animation:none;transform:translate(var(--fly-x),var(--fly-y))scale(.84);opacity:1}.lt-sent.is-drop .lt-postbox{animation:none}.lt-sent.is-drop .lt-postbox-lid{transition:none}.lt-intro.is-open .lt-intro-env,.lt-intro.is-open .lt-intro-pocket-flap,.lt-intro.is-open .lt-intro-seal{animation:none}.lt-intro.is-open.is-out .lt-intro-env{display:none}.lt-intro-letter,.lt-intro.is-out .lt-intro-letter{opacity:1;transform:none;transition:none;pointer-events:auto}.lt-intro-sheet{transition:none}.lt-toast{animation:none;transition:none}.lt-save-hint[data-state=saving] .lt-save-dot{animation:none}.lt-bar,.lt-bar-thumb{transition:none}}