:root{--page-bg:#fdf8f0;--text:#2c1810;--accent:#8b4513;--muted:#9e8a7a;--border:#d4c5b0;--shadow:rgba(44,24,16,.08)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;height:-webkit-fill-available;color:var(--text);background:#1a0f08;font-family:Georgia,Palatino,Times New Roman,serif;overflow:hidden}.book{background:var(--page-bg);width:100%;max-width:800px;height:100dvh;box-shadow:0 0 60px var(--shadow);flex-direction:column;margin:0 auto;display:flex}.book-header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:1rem 1.75rem;display:flex}.book-title{letter-spacing:.12em;text-transform:uppercase;color:var(--accent);font-size:1rem}.wordmark{text-transform:none;letter-spacing:.02em;color:var(--accent);font-family:Georgia,serif;font-size:1rem;font-weight:500}.wordmark-e{vertical-align:.2em;font-size:.4em;line-height:0}.login-wordmark{margin-bottom:.5rem;font-size:3rem;line-height:1}.visibility-tabs{scrollbar-width:none;gap:1.25rem;max-width:100%;display:flex;overflow-x:auto}.visibility-tabs::-webkit-scrollbar{display:none}.visibility-tab{color:var(--muted);cursor:pointer;letter-spacing:.05em;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid transparent;flex-shrink:0;padding:.2rem 0;font-family:inherit;font-size:.85rem;transition:color .2s,border-color .2s}.visibility-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.folio-page{flex-direction:column;justify-content:center;align-items:center;padding:3rem 4rem;display:flex}.page-content{flex-direction:column;flex:1;justify-content:safe center;align-items:center;min-height:0;padding:3rem 4rem;display:flex;overflow-y:auto}.post-card{flex-direction:column;align-items:flex-start;width:100%;max-width:520px;display:flex}.post-kind{letter-spacing:.25em;text-transform:uppercase;color:var(--muted);margin-bottom:2rem;font-size:.65rem}.post-content{color:var(--text);white-space:pre-wrap;border:none;margin:0;padding:0;font-size:1.35rem;font-style:italic;line-height:2}.post-meta{color:var(--muted);letter-spacing:.05em;margin-top:3rem;font-size:.75rem;font-style:normal}.share-row{align-items:center;gap:.5rem;width:100%;margin-top:1.5rem;display:flex}.share-select{color:var(--text);border:1px solid var(--border,var(--muted));cursor:pointer;background:0 0;border-radius:6px;flex:1;padding:.4rem .6rem;font-family:inherit;font-size:.8rem}.share-btn{color:var(--accent);border:1px solid var(--accent);cursor:pointer;background:0 0;border-radius:6px;padding:.4rem .9rem;font-family:inherit;font-size:.8rem;transition:opacity .2s}.share-btn:hover{opacity:.85}.share-btn:disabled{opacity:.4;cursor:default}.empty-page{text-align:center;color:var(--muted);flex-direction:column;align-items:center;gap:1.5rem;display:flex}.empty-page p{font-size:1.1rem;font-style:italic}.loading{color:var(--muted);font-style:italic}.book-footer{padding:1rem 1.75rem;padding-bottom:max(1rem, env(safe-area-inset-bottom));border-top:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.book-nav{align-items:center;gap:1.25rem;display:flex}.nav-btn{border:1px solid var(--border);color:var(--accent);cursor:pointer;background:0 0;border-radius:2px;padding:.4rem 1rem;font-family:inherit;font-size:.9rem;transition:background .15s}.nav-btn:hover:not(:disabled){background:var(--border)}.nav-btn:disabled{opacity:.25;cursor:default}.page-counter{color:var(--muted);text-align:center;min-width:4rem;font-size:.8rem;font-style:italic}.compose-btn{background:var(--accent);color:var(--page-bg);cursor:pointer;letter-spacing:.04em;border:none;border-radius:2px;padding:.45rem 1.1rem;font-family:inherit;font-size:.85rem;transition:opacity .15s}.compose-btn:hover{opacity:.85}.compose-btn:disabled{opacity:.4;cursor:default}.page-enter{animation:.25s forwards pageIn}@keyframes pageIn{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}.compose-form{flex-direction:column;gap:2rem;width:100%;max-width:560px;display:flex}.form-field{flex-direction:column;gap:.5rem;display:flex}.form-field label{letter-spacing:.15em;text-transform:uppercase;color:var(--muted);font-size:.7rem}.form-field textarea{border:1px solid var(--border);color:var(--text);resize:vertical;background:0 0;border-radius:2px;min-height:9rem;padding:.75rem;font-family:inherit;font-size:1.1rem;line-height:1.8}.form-field textarea:focus{border-color:var(--accent);outline:none}.kind-picker{gap:.5rem;display:flex}.kind-btn{border:1px solid var(--border);color:var(--muted);cursor:pointer;background:0 0;border-radius:2px;padding:.4rem 1rem;font-family:inherit;font-size:.85rem;transition:all .15s}.kind-btn.active{background:var(--accent);color:var(--page-bg);border-color:var(--accent)}.vis-buttons{flex-wrap:wrap}.vis-select{width:100%;color:var(--text);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:2px;padding:.55rem .7rem;font-family:inherit;font-size:.9rem;display:none}.form-actions{justify-content:flex-end;display:flex}.error-msg{color:#c0392b;font-size:.9rem}.login-page{gap:2rem}.login-buttons{flex-direction:column;gap:.75rem;width:100%;max-width:280px;display:flex}.login-buttons .compose-btn{width:100%;padding:.75rem;font-size:.95rem}.footer-actions{align-items:center;gap:.5rem;display:flex}.groups-btn{border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:2px;padding:.4rem .6rem;font-size:1rem;line-height:1;transition:background .15s}.groups-btn:hover{background:var(--border)}.book-copyright{text-align:center;color:var(--muted);letter-spacing:.08em;border-top:1px solid var(--border);padding:.4rem 0 .6rem;font-size:.65rem}.groups-list{flex-direction:column;gap:.5rem;margin-bottom:2rem;display:flex}.group-row{border:1px solid var(--border);width:100%;color:var(--text);cursor:pointer;text-align:left;background:0 0;border-radius:2px;justify-content:space-between;align-items:center;padding:.75rem 1rem;font-family:inherit;font-size:1rem;transition:background .15s;display:flex}.group-row:hover{background:var(--border)}.group-name{font-size:1rem}.group-arrow{color:var(--muted);font-size:1.2rem}.group-create{border-top:1px solid var(--border);flex-direction:column;gap:1rem;padding-top:1.5rem;display:flex}.group-name-input{border:1px solid var(--border);color:var(--text);background:0 0;border-radius:2px;width:100%;padding:.6rem .75rem;font-family:inherit;font-size:1rem}.group-name-input:focus{border-color:var(--accent);outline:none}.group-create form{flex-direction:column;gap:1rem;display:flex}.group-create .compose-btn{width:100%;padding:.7rem 1.1rem}.invite-form{flex-direction:column;gap:1rem;width:100%;max-width:480px;display:flex}.invite-heading{color:var(--accent);font-size:1.1rem}.invite-ok{color:#27ae60;font-size:.9rem}.pending-invites{border-top:1px solid var(--border);margin-top:2rem;padding-top:1.5rem}.pending-heading{letter-spacing:.15em;text-transform:uppercase;color:var(--muted);margin-bottom:.75rem;font-size:.7rem}.pending-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:.5rem 0;font-size:.9rem;display:flex}.pending-contact{color:var(--text)}.pending-badge{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);background:var(--border);border-radius:2px;padding:.15rem .5rem;font-size:.7rem}.qr-section{border-top:1px solid var(--border);margin-top:2rem;padding-top:1.5rem}.qr-heading{color:var(--text);margin:0 0 .4rem;font-size:1rem;font-weight:600}.qr-wrap{justify-content:center;margin:1.25rem 0 1rem;display:flex}.qr-img{border:2px solid var(--border);background:#fdf8f0;border-radius:8px;width:220px;height:220px}.qr-url-row{align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.qr-regen-btn{border:1px solid var(--border);color:var(--muted);cursor:pointer;background:0 0;border-radius:6px;margin-top:.25rem;padding:.35rem .75rem;font-size:.8rem}.qr-regen-btn:hover{border-color:var(--accent);color:var(--accent)}.legal-page{background:var(--page-bg);min-height:100vh;padding:3rem 1.5rem}.legal-content{flex-direction:column;gap:1.25rem;max-width:680px;margin:0 auto;display:flex}.legal-back{color:var(--accent);margin-bottom:1rem;font-size:.85rem;text-decoration:none;display:inline-block}.legal-content h1{color:var(--accent);margin-bottom:.25rem;font-size:1.75rem}.legal-content h2{letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-top:.5rem;font-size:1rem}.legal-content p,.legal-content li{color:var(--text);font-size:1rem;line-height:1.75}.legal-content ul,.legal-content ol{flex-direction:column;gap:.4rem;padding-left:1.5rem;display:flex}.legal-content a{color:var(--accent)}.legal-date{color:var(--muted);font-size:.85rem;font-style:italic}.deletion-confirmed{background:#f0f7ee;border:1px solid #b7d9b0;border-radius:4px;flex-direction:column;gap:.5rem;padding:1rem 1.25rem;display:flex}.deletion-warning{color:#c0392b;font-weight:700}.deletion-actions{flex-wrap:wrap;gap:.75rem;display:flex}.deletion-btn{border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:2px;padding:.6rem 1.25rem;font-family:inherit;font-size:.95rem;transition:background .15s}.deletion-btn:hover{background:var(--border)}.deletion-btn.danger{color:#fff;background:#c0392b;border-color:#c0392b}.deletion-btn.danger:hover{background:#a93226}.deletion-btn.cancel{color:var(--muted)}.deletion-code code{background:var(--border);border-radius:2px;padding:.1em .4em;font-family:monospace}.settings-page{justify-content:flex-start;align-items:stretch;padding:1.5rem 1.75rem;overflow:hidden auto}.settings-section{border-bottom:1px solid var(--border);margin-bottom:2rem;padding-bottom:1.5rem}.settings-section:last-child{border-bottom:none}.settings-heading{color:var(--accent);margin-bottom:.5rem;font-family:Georgia,serif;font-size:.95rem;font-weight:600}.settings-links{flex-direction:column;gap:.5rem;margin-top:.5rem;display:flex}.settings-link{color:var(--accent);font-size:.9rem;text-decoration:none}.settings-link:hover{text-decoration:underline}.api-key-new{background:#2c1810;border-radius:8px;margin-bottom:1.5rem;padding:1rem 1.25rem}.api-key-new-label{color:#d4b896;margin-bottom:.75rem;font-size:.8rem;font-weight:600}.api-key-copy-row{align-items:stretch;gap:.5rem;margin-bottom:.75rem;display:flex}.api-key-input{color:#e8d5b7;background:#1a0f08;border:1px solid #5a3a20;border-radius:4px;flex:1;min-width:0;padding:.5rem .75rem;font-family:Courier New,Courier,monospace;font-size:.85rem}.api-key-input:focus{border-color:var(--accent);outline:none}.api-key-copy-btn{background:var(--accent);color:#fdf8f0;cursor:pointer;white-space:nowrap;border:none;border-radius:4px;flex-shrink:0;padding:.5rem 1rem;font-family:inherit;font-size:.8rem}.api-key-copy-btn:hover{opacity:.85}.api-key-instructions{color:#9e8a7a;font-size:.75rem;line-height:1.6}.api-key-inline{color:#d4b896;background:#1a0f08;border-radius:3px;padding:.1em .3em;font-family:Courier New,Courier,monospace;font-size:.8rem}.api-key-value{border:1px solid var(--border);word-break:break-all;color:#e8d5b7;background:#1a0f08;border-radius:4px;margin:.25rem 0;padding:.5rem .75rem;font-family:Courier New,Courier,monospace;font-size:.75rem;display:block}.api-key-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:.6rem 0;display:flex}.api-key-row:last-child{border-bottom:none}.api-key-name{color:var(--text);font-size:.875rem}.api-key-revoke{border:1px solid var(--muted);color:var(--muted);cursor:pointer;background:0 0;border-radius:4px;padding:.2rem .6rem;font-family:inherit;font-size:.75rem}.api-key-revoke:hover{border-color:var(--accent);color:var(--accent)}.setup-tabs{gap:.25rem;margin-bottom:.75rem;display:flex}.setup-tab{border:1px solid var(--border);color:var(--muted);cursor:pointer;background:0 0;border-radius:4px;padding:.3rem .8rem;font-family:inherit;font-size:.8rem}.setup-tab--active{background:var(--accent);border-color:var(--accent);color:#fdf8f0}.setup-tab:hover:not(.setup-tab--active){border-color:var(--accent);color:var(--accent)}.setup-steps{margin-top:.5rem}.setup-steps .post-meta{margin-bottom:.4rem}.setup-ol{margin-top:.75rem;padding-left:1.25rem}.setup-ol li{color:var(--text);margin-bottom:.5rem;font-size:.85rem;line-height:1.5}@media (width<=600px){.page-content{padding:2rem 1.5rem}.post-content{font-size:1.1rem}.book-header,.book-footer{padding:.85rem 1.25rem}.vis-control.has-groups .vis-buttons{display:none}.vis-control.has-groups .vis-select{display:block}}