.editor-shell{--hairline: var(--tg-secondary-bg);--hover: var(--tg-secondary-bg);--raise: var(--tg-secondary-bg);--danger: #e5534b;--ok: #2faa5a;--warn: #d99125;box-sizing:border-box;display:flex;flex-direction:column;gap:10px;height:100vh;height:100dvh;padding:calc(12px + env(safe-area-inset-top)) calc(14px + env(safe-area-inset-right)) calc(12px + env(safe-area-inset-bottom)) calc(14px + env(safe-area-inset-left));overflow:hidden;background:var(--tg-bg);color:var(--tg-text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}@supports (color: color-mix(in srgb,white,black)){.editor-shell{--hairline: color-mix(in srgb, var(--tg-text) 14%, transparent);--hover: color-mix(in srgb, var(--tg-text) 8%, transparent);--raise: color-mix(in srgb, var(--tg-text) 4%, transparent)}}.editor-shell *,.editor-shell *:before,.editor-shell *:after{box-sizing:border-box}.command-bar{display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px;flex:0 0 auto}.view-switch{display:inline-flex;gap:2px;padding:2px;background:var(--tg-secondary-bg);border-radius:10px;flex:0 0 auto}.status-lane{flex:1 1 0;min-width:0;display:flex;align-items:center;overflow:hidden}.cmd-actions{display:inline-flex;align-items:center;gap:8px;flex:0 0 auto}.status-chip{display:inline-flex;align-items:center;gap:6px;min-width:0;color:var(--tg-hint);font-size:.8rem;white-space:nowrap}.status-text{overflow:hidden;text-overflow:ellipsis}.status-dot{width:7px;height:7px;border-radius:50%;flex:0 0 auto;background:var(--tg-hint)}.status-chip[data-state=saving] .status-dot{background:var(--warn);animation:status-pulse 1.1s ease-in-out infinite}.status-chip[data-state=saved] .status-dot{background:var(--ok)}.status-chip[data-state=conflict] .status-dot{background:var(--warn)}.status-chip[data-state=error] .status-dot{background:var(--danger)}@keyframes status-pulse{0%,to{opacity:1}50%{opacity:.35}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:36px;padding:6px 14px;border:1px solid var(--hairline);border-radius:9px;background:transparent;color:var(--tg-text);font:inherit;font-size:.9rem;line-height:1;cursor:pointer;white-space:nowrap;transition:background .12s ease,border-color .12s ease,transform 80ms ease}.btn:hover:not(:disabled){background:var(--hover)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:focus-visible{outline:2px solid var(--tg-link);outline-offset:2px}.btn:disabled{opacity:.45;cursor:not-allowed}.btn--primary{min-width:7.5rem;background:var(--tg-button);border-color:transparent;color:var(--tg-button-text);font-weight:600;box-shadow:0 1px 2px #00000029}.btn--primary:hover:not(:disabled){background:var(--tg-button);filter:brightness(1.04)}.seg-btn{min-height:30px;padding:5px 14px;border:none;border-radius:8px;background:transparent;color:var(--tg-hint);font:inherit;font-size:.85rem;font-weight:500;cursor:pointer;transition:background .12s ease,color .12s ease}.seg-btn:hover{color:var(--tg-text)}.seg-btn:focus-visible{outline:2px solid var(--tg-link);outline-offset:2px}.seg-btn[aria-pressed=true]{background:var(--tg-bg);color:var(--tg-text);font-weight:600;box-shadow:0 1px 2px #0000001f}.btn--icon{min-width:36px;padding:6px 10px}.btn--more{font-size:1.1rem;letter-spacing:.05em}.menu-wrap{position:relative;display:inline-flex}.menu-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:39;background:transparent}.menu{position:absolute;top:calc(100% + 8px);right:0;z-index:40;min-width:252px;max-height:min(70vh,460px);overflow-y:auto;padding:8px;background:var(--tg-bg);border:1px solid var(--hairline);border-radius:14px;box-shadow:0 14px 34px #0003,0 2px 8px #0000001f;animation:menu-in .12s ease}@keyframes menu-in{0%{opacity:0;transform:translateY(-6px)}}.menu-group+.menu-group{margin-top:6px;padding-top:6px;border-top:1px solid var(--hairline)}.menu-label{padding:4px 10px;color:var(--tg-hint);font-size:.66rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.menu-item{display:flex;align-items:center;gap:10px;width:100%;min-height:40px;padding:8px 10px;border:none;border-radius:9px;background:transparent;color:var(--tg-text);font:inherit;font-size:.92rem;text-align:left;cursor:pointer}.menu-item:hover:not(:disabled){background:var(--hover)}.menu-item:focus-visible{outline:2px solid var(--tg-link);outline-offset:-2px}.menu-item:disabled{opacity:.45;cursor:not-allowed}.menu-item-tail{margin-left:auto;color:var(--tg-hint);font-size:.8rem}.menu-switch{display:flex;align-items:center;gap:10px;width:100%;min-height:40px;padding:8px 10px;border:none;border-radius:9px;background:transparent;color:var(--tg-text);font:inherit;font-size:.92rem;cursor:pointer}.menu-switch:hover{background:var(--hover)}.menu-switch:focus-visible{outline:2px solid var(--tg-link);outline-offset:-2px}.switch-track{margin-left:auto;position:relative;width:38px;height:22px;border-radius:999px;background:var(--tg-secondary-bg);border:1px solid var(--hairline);transition:background .14s ease;flex:0 0 auto}.switch-knob{position:absolute;top:50%;left:3px;width:16px;height:16px;border-radius:50%;background:var(--tg-hint);transform:translateY(-50%);transition:left .14s ease,background .14s ease}.menu-switch[aria-checked=true] .switch-track{background:var(--tg-button);border-color:transparent}.menu-switch[aria-checked=true] .switch-knob{left:calc(100% - 19px);background:var(--tg-button-text)}.context-bar{display:flex;align-items:center;gap:12px;flex:0 0 auto;flex-wrap:wrap}.title-field{display:flex;flex:1 1 14rem;min-width:0}.title-input{flex:1;min-width:0;padding:4px 2px;border:none;border-bottom:1px solid transparent;background:transparent;color:var(--tg-text);font:inherit;font-size:1.12rem;font-weight:650;letter-spacing:-.01em}.title-input::placeholder{color:var(--tg-hint);font-weight:500}.title-input:focus{outline:none;border-bottom-color:var(--tg-link)}.field-label{color:var(--tg-hint);font-size:.7rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.visibility-field{display:inline-flex;align-items:center;gap:8px;flex:0 0 auto}.ghost-select{padding:6px 10px;border:1px solid var(--hairline);border-radius:9px;background:transparent;color:var(--tg-text);font:inherit;font-size:.85rem;cursor:pointer}.ghost-select:focus-visible{outline:2px solid var(--tg-link);outline-offset:2px}.offline-alert{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 12px;border:1px solid var(--danger);border-left-width:3px;border-radius:9px;background:color-mix(in srgb,var(--danger) 12%,transparent);color:var(--tg-text);font-size:.84rem}.inline-action{flex:0 0 auto;min-height:30px;padding:5px 9px;border:1px solid var(--hairline);border-radius:8px;background:var(--tg-secondary-bg);color:var(--tg-text);font:inherit;font-size:.8rem;cursor:pointer}.inline-action:focus-visible{outline:2px solid var(--tg-link);outline-offset:2px}.workspace{flex:1 1 auto;min-height:0;display:grid;gap:12px;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}.editor-shell[data-editor-layout=split] .workspace{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.editor-shell[data-editor-layout=stacked-split] .workspace{grid-template-rows:minmax(0,1fr) minmax(0,1fr)}.pane{min-width:0;min-height:0;border:1px solid var(--hairline);border-radius:12px;overflow:hidden;background:var(--tg-bg)}.editor-pane{display:flex;flex-direction:column}.editor-scroll{flex:1;min-height:0;overflow:auto}.editor-scroll .cm-editor{height:100%}.editor-scroll .cm-editor.cm-focused{outline:none}.format-toolbar{display:flex;flex-wrap:nowrap;align-items:center;gap:4px;flex:0 0 auto;padding:6px;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--hairline);background:var(--raise)}.format-toolbar::-webkit-scrollbar{display:none}.fmt-btn{flex:0 0 auto;min-width:34px;min-height:32px;padding:5px 9px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--tg-text);font:inherit;font-size:.85rem;cursor:pointer;transition:background .12s ease,border-color .12s ease}.fmt-btn:hover{background:var(--hover)}.fmt-btn:active{border-color:var(--hairline)}.fmt-btn:focus-visible{outline:2px solid var(--tg-link);outline-offset:1px}.fmt-btn.tok{font-family:ui-monospace,SF Mono,SFMono-Regular,Menlo,Consolas,monospace;color:var(--tg-hint)}.fmt-btn.tok:hover{color:var(--tg-text)}.preview-pane{overflow:auto;overscroll-behavior:contain;padding:18px 20px;line-height:1.62;font-size:.96rem}.preview-pane:focus-visible{outline:2px solid var(--tg-link);outline-offset:-2px}.preview-pane>:first-child{margin-top:0}.preview-pane h1{font-size:1.6rem;line-height:1.2;letter-spacing:-.02em;margin:0 0 .5em}.preview-pane h2{font-size:1.28rem;letter-spacing:-.01em;margin:1.4em 0 .4em}.preview-pane h3{font-size:1.08rem;margin:1.2em 0 .3em}.preview-pane p,.preview-pane ul,.preview-pane ol,.preview-pane blockquote{margin:.7em 0}.preview-pane a{color:var(--tg-link)}.preview-pane code{font-family:ui-monospace,SF Mono,SFMono-Regular,Menlo,Consolas,monospace;font-size:.88em;padding:.1em .34em;border-radius:5px;background:var(--raise)}.preview-pane pre{padding:12px 14px;border-radius:10px;background:var(--tg-secondary-bg);overflow:auto}.preview-pane pre code{padding:0;background:none}.preview-pane blockquote{padding-left:14px;border-left:3px solid var(--hairline);color:var(--tg-hint)}.preview-pane hr{border:none;border-top:1px solid var(--hairline);margin:1.6em 0}.preview-pane img{max-width:100%;height:auto}.snackbar{position:fixed;left:50%;bottom:calc(18px + env(safe-area-inset-bottom));z-index:50;max-width:min(92vw,30rem);padding:9px 16px;border-radius:999px;background:var(--tg-text);color:var(--tg-bg);font-size:.84rem;box-shadow:0 8px 24px #0000003d;transform:translate(-50%);opacity:1;transition:opacity .16s ease,transform .16s ease;pointer-events:none}.snackbar[data-shown=false]{opacity:0;transform:translate(-50%,10px)}.snackbar-text{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sheet-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:44;display:flex;align-items:center;justify-content:center;padding:16px;background:#0000006b}.sheet{width:min(100%,36rem);max-height:min(82vh,40rem);display:flex;flex-direction:column;padding:16px;background:var(--tg-bg);color:var(--tg-text);border:1px solid var(--hairline);border-radius:16px;box-shadow:0 20px 48px #0000004d;overflow:auto}.sheet-head{display:flex;align-items:center;gap:10px;margin-bottom:8px}.sheet-title{flex:1;font-size:1.05rem;font-weight:650}.row-list{list-style:none;margin:0;padding:0}.row{display:flex;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--hairline)}.row:first-child{border-top:none}.row-main{flex:1;min-width:0}.row-title{display:block;overflow-wrap:anywhere;font-weight:550}.row-meta{color:var(--tg-hint);font-size:.82rem}.muted{color:var(--tg-hint);font-size:.9rem}.grant-form{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;margin:6px 0 4px}.field-stack{display:flex;flex-direction:column;gap:4px}.field-stack.grow{flex:1 1 9rem;min-width:0}.text-input{padding:7px 10px;border:1px solid var(--hairline);border-radius:9px;background:transparent;color:var(--tg-text);font:inherit;font-size:.9rem}.text-input:focus-visible,.ghost-select:focus,.text-input:focus{outline:none;border-color:var(--tg-link)}.section-divide{margin-top:14px;padding-top:12px;border-top:1px solid var(--hairline)}.resume-debug{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:4px;flex:0 0 auto;padding:8px;border:1px solid var(--hairline);border-radius:9px;background:var(--raise);font-size:.75rem}.resume-debug .k{color:var(--tg-hint)}@media(max-width:720px){.view-switch{flex:1 1 100%;order:1}.view-switch .seg-btn{flex:1}.status-lane{order:2}.cmd-actions{order:3}.menu{position:fixed;left:0;right:0;bottom:0;top:auto;min-width:0;max-height:80vh;border-radius:18px 18px 0 0;padding:10px 10px calc(10px + env(safe-area-inset-bottom));animation:sheet-up .16s ease}.menu-scrim{background:#0006}.menu-item,.menu-switch{min-height:46px}.sheet-scrim{align-items:flex-end;padding:0}.sheet{width:100%;max-height:86vh;border-radius:18px 18px 0 0;padding-bottom:calc(16px + env(safe-area-inset-bottom))}}@keyframes sheet-up{0%{transform:translateY(100%)}}@media(prefers-reduced-motion:reduce){.editor-shell *,.menu,.snackbar,.status-chip[data-state=saving] .status-dot{animation:none!important;transition:none!important}}
