:root{color-scheme:light;--bg: #f7f5f1;--surface: #ffffff;--surface-2: #efebe4;--text: #22201c;--muted: #6c665d;--border: #e2dcd2;--accent: #6440bf;--accent-soft: #ece6fa;--spoiler-bg: #2c2836;--spoiler-stripe: #3a3546;--spoiler-text: #ece9f3;--role-protagonist: #cc5426;--role-main: #2d6fc0;--role-antagonist: #b0335a;--role-supporting: #2a8c60;--role-minor: #8f897f;--arc-1: #6440bf;--arc-2: #2d6fc0;--arc-3: #2a8c60;--arc-4: #cc5426;--radius: 10px;--font-body: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-display: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif}@media(prefers-color-scheme:dark){:root{color-scheme:dark;--bg: #15141a;--surface: #1e1d25;--surface-2: #2a2833;--text: #ebe8f0;--muted: #a29dab;--border: #36333f;--accent: #ab8ff6;--accent-soft: #2e2843;--spoiler-bg: #34303f;--spoiler-stripe: #3e3a4a;--spoiler-text: #ece9f3;--role-protagonist: #f0814f;--role-main: #5d9cf0;--role-antagonist: #e2638a;--role-supporting: #4fbf8b;--role-minor: #a39d93;--arc-1: #7d5bd6;--arc-2: #3f7fcf;--arc-3: #2f9a6a;--arc-4: #d4612f}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:2px}h1,h2,h3{font-family:var(--font-display);line-height:1.2;margin:0 0 .5em}h1{font-size:2rem}h2{font-size:1.4rem}h3{font-size:1.1rem}p{margin:0 0 .75em}p:last-child{margin-bottom:0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.container{max-width:1040px;margin:0 auto;padding:0 16px}main.container{padding-top:28px;padding-bottom:64px}.muted{color:var(--muted)}.small{font-size:.875rem}.stack{display:flex;flex-direction:column;gap:28px}.clamp{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.site-header{background:var(--surface);border-bottom:1px solid var(--border)}.site-header .container{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px;min-height:56px;padding-top:8px;padding-bottom:8px}.editor-status{display:flex;align-items:center;gap:10px}.site-title{color:var(--text);font-family:var(--font-display);font-size:1.2rem;font-weight:600;text-decoration:none}.page-title{margin-bottom:20px}.card-grid{list-style:none;margin:0;padding:0;display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.card-grid--wide{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.card-grid>li{display:flex}.card{display:block;width:100%;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.card--link{color:inherit;text-decoration:none;transition:border-color .12s,transform .12s}.card--link:hover{border-color:var(--accent);transform:translateY(-1px)}.card h3,.card h2{color:var(--text)}.novel-card h2{font-size:1.3rem}.novel-card .chips{margin:10px 0}.role-edge{border-left-width:4px}.role-edge.role-protagonist{border-left-color:var(--role-protagonist)}.role-edge.role-main{border-left-color:var(--role-main)}.role-edge.role-antagonist{border-left-color:var(--role-antagonist)}.role-edge.role-supporting{border-left-color:var(--role-supporting)}.role-edge.role-minor{border-left-color:var(--role-minor)}.badge{display:inline-block;margin-left:8px;padding:1px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-family:var(--font-body);font-size:.75rem;font-weight:600;vertical-align:middle}.chips{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px}.chip{padding:2px 10px;border-radius:999px;background:var(--surface-2);font-size:.8rem}.count{font-family:var(--font-body);font-size:.85rem;font-weight:500;color:var(--muted)}.empty{padding:40px 16px;text-align:center;background:var(--surface);border:1px dashed var(--border);border-radius:var(--radius)}.error-box{padding:16px;border:1px solid var(--role-antagonist);border-radius:var(--radius);background:var(--surface)}.error-box pre{white-space:pre-wrap;font-size:.85rem;overflow-wrap:anywhere}.note{padding:10px 14px;border-radius:var(--radius);background:var(--accent-soft);font-size:.9rem}.novel-header{display:flex;flex-wrap:wrap;gap:16px 24px;justify-content:space-between;align-items:flex-start}.novel-header__main{flex:1 1 320px;min-width:0}.novel-header__main h1{margin-bottom:4px}.novel-header__tools{flex:0 1 300px;display:flex;flex-direction:column;gap:10px;width:100%}.tabs{display:flex;gap:2px;margin:24px 0 28px;border-bottom:1px solid var(--border);overflow-x:auto;scrollbar-width:none}.tab{flex:none;padding:8px 12px;color:var(--muted);text-decoration:none;border-bottom:2px solid transparent;margin-bottom:-1px;font-size:.95rem}.tab:hover{color:var(--text)}.tab[aria-current=page]{color:var(--text);border-bottom-color:var(--accent);font-weight:600}.search{position:relative}.search input{width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);font:inherit;font-size:.95rem}.search__results{position:absolute;z-index:10;top:calc(100% + 4px);left:0;right:0;list-style:none;margin:0;padding:4px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 8px 24px #0000001f}.search__results a{display:flex;justify-content:space-between;gap:12px;padding:8px 10px;border-radius:6px;color:var(--text);text-decoration:none}.search__results a:hover{background:var(--surface-2)}.search__kind{color:var(--muted);font-size:.8rem;white-space:nowrap}.search__empty{padding:8px 10px;color:var(--muted)}.toggle{display:inline-flex;align-items:center;gap:10px;align-self:flex-start;padding:0;border:0;background:none;color:var(--text);font:inherit;font-size:.9rem;cursor:pointer}.toggle__track{position:relative;width:36px;height:20px;border-radius:999px;background:var(--border);transition:background .15s}.toggle__thumb{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--surface);box-shadow:0 1px 2px #00000040;transition:transform .15s}.toggle--on .toggle__track{background:var(--accent)}.toggle--on .toggle__thumb{transform:translate(16px)}.spoiler--hidden{display:block;width:100%;padding:12px 14px;border:0;border-radius:8px;background:repeating-linear-gradient(135deg,var(--spoiler-bg) 0 10px,var(--spoiler-stripe) 10px 20px);color:var(--spoiler-text);font:inherit;font-size:.9rem;text-align:left;cursor:pointer}.spoiler--hidden:hover{filter:brightness(1.15)}.spoiler--inline.spoiler--hidden{display:inline;width:auto;padding:1px 8px;border-radius:4px;font-size:.85rem}.spoiler--open{padding-left:12px;border-left:3px solid var(--accent)}.spoiler--inline.spoiler--open{padding:0 4px;border:0;border-radius:4px;background:var(--accent-soft)}.spoiler-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}.spoiler-list__title{font-weight:600}.breadcrumb{margin-bottom:6px;font-size:.9rem}.breadcrumb a{text-decoration:none}.entry__title{font-size:1.8rem}.facts{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin:0;padding:14px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.facts:empty{display:none}.fact dt{color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.04em}.fact dd{margin:2px 0 0}.role-dot{display:inline-block;width:10px;height:10px;margin-right:6px;border-radius:50%;background:var(--role-minor)}.role-dot.role-protagonist{background:var(--role-protagonist)}.role-dot.role-main{background:var(--role-main)}.role-dot.role-antagonist{background:var(--role-antagonist)}.role-dot.role-supporting{background:var(--role-supporting)}.rel-list{margin:0;padding-left:18px}.rel-list li+li{margin-top:6px}.rel-type{padding:1px 8px;border-radius:999px;background:var(--surface-2);font-size:.85rem}.rel-groups{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.stats{list-style:none;margin:0;padding:0;display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(130px,1fr))}.stats a{display:flex;flex-direction:column;padding:12px 14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);text-decoration:none}.stats a:hover{border-color:var(--accent)}.stats__value{font-family:var(--font-display);font-size:1.6rem;font-weight:600;line-height:1.1}.stats__label{color:var(--muted);font-size:.85rem}.arcbar{list-style:none;margin:0;padding:0;display:flex;gap:3px;border-radius:var(--radius);overflow:hidden}.arcbar__seg{flex-basis:0;min-width:56px}.arcbar__seg a{display:flex;flex-direction:column;padding:8px 10px;color:#fff;text-decoration:none;white-space:nowrap;overflow:hidden}.arcbar__seg a:hover{filter:brightness(1.12)}.arcbar__name{font-weight:600;font-size:.9rem;overflow:hidden;text-overflow:ellipsis}.arcbar__range{font-size:.75rem;opacity:.85}.arc-color-1 a{background:var(--arc-1)}.arc-color-2 a{background:var(--arc-2)}.arc-color-3 a{background:var(--arc-3)}.arc-color-4 a{background:var(--arc-4)}.arc-list{list-style:none;margin:0;padding:0;display:grid;gap:14px}.arc-card{border-left-width:4px}.arc-card>*+*{margin-top:8px}.arc-edge-1{border-left-color:var(--arc-1)}.arc-edge-2{border-left-color:var(--arc-2)}.arc-edge-3{border-left-color:var(--arc-3)}.arc-edge-4{border-left-color:var(--arc-4)}.chapter-list{list-style:none;margin:0;padding:0}.chapter-list li+li{margin-top:12px}.chapter-list p{margin:2px 0 0}.timeline{list-style:none;margin:0;padding:0;position:relative}.timeline:before{content:"";position:absolute;top:6px;bottom:6px;left:66px;width:2px;background:var(--border)}.timeline li{position:relative;display:grid;grid-template-columns:56px 1fr;gap:24px;padding:6px 0}.timeline li:before{content:"";position:absolute;left:62px;top:13px;width:10px;height:10px;border-radius:50%;background:var(--accent)}.timeline__chapter{color:var(--muted);font-size:.85rem;text-align:right;padding-top:2px}.timeline__title{margin:0;font-weight:600}.timeline__body .muted{margin:2px 0 0}.glossary{margin:0;display:grid;gap:2px}.glossary>div{padding:12px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.glossary dt{font-weight:600}.glossary dd{margin:2px 0 0}.relmap{margin:0}.relmap__controls{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 16px;margin-bottom:10px}.legend{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:4px 14px;font-size:.85rem;color:var(--muted)}.checkbox{display:inline-flex;align-items:center;gap:6px;font-size:.9rem}.relmap__scroll{overflow-x:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.relmap svg{display:block;width:100%;min-width:640px;height:auto}.relmap figcaption{margin-top:8px}.edge line{stroke:var(--border);stroke-width:2;transition:opacity .12s}.edge--active line{stroke:var(--accent);stroke-width:2.5}.edge--dim{opacity:.25}.edge__label,.node__label{paint-order:stroke;stroke:var(--surface);stroke-width:4px;stroke-linejoin:round}.edge__label{fill:var(--muted);font-size:12px}.node{cursor:pointer;transition:opacity .12s}.node circle{fill:var(--role-minor);stroke:var(--surface);stroke-width:3}.node.role-protagonist circle{fill:var(--role-protagonist)}.node.role-main circle{fill:var(--role-main)}.node.role-antagonist circle{fill:var(--role-antagonist)}.node.role-supporting circle{fill:var(--role-supporting)}.node:hover circle,.node:focus-visible circle{stroke:var(--accent)}.node__label{fill:var(--text);font-size:14px;font-weight:600}.node--dim{opacity:.3}@media(max-width:600px){h1{font-size:1.6rem}.novel-header__tools{flex-basis:100%}}.button{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font:inherit;font-size:.95rem;text-decoration:none;cursor:pointer}.button:hover:not(:disabled){border-color:var(--accent)}.button:disabled{opacity:.6;cursor:default}.button--small{padding:4px 10px;font-size:.85rem}.button--primary{border-color:var(--accent);background:var(--accent);color:var(--surface);font-weight:600}.button--danger{margin-left:auto;color:var(--role-antagonist)}.button--danger:hover:not(:disabled){border-color:var(--role-antagonist)}.section-heading{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px}.section-heading h2{margin-bottom:0}.section-heading+*{margin-top:10px}.list-actions{display:flex;justify-content:flex-end}.list-actions:empty{display:none}.form{display:flex;flex-direction:column;gap:16px}.form h2{margin-bottom:2px}.form-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.field{display:flex;flex-direction:column;gap:4px;min-width:0}.field__label{font-size:.85rem;font-weight:600}.field__hint{margin:0;color:var(--muted);font-size:.8rem}.field input,.field select,.field textarea,.form textarea,.row-editor input:not([type=checkbox]),.row-editor select{width:100%;min-width:0;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font:inherit;font-size:.95rem}.field textarea,.form textarea{resize:vertical;line-height:1.5}.field-group{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;border:0;min-width:0}.field-group legend{padding:0;margin-bottom:4px}.checkbox-list{display:flex;flex-wrap:wrap;gap:6px 18px}.row-editor{display:grid;gap:8px;grid-template-columns:minmax(140px,1.2fr) minmax(120px,1fr) minmax(140px,1.6fr) auto auto;align-items:center}.row-editor--event{grid-template-columns:64px minmax(140px,1.4fr) minmax(140px,1.6fr) auto auto}@media(max-width:720px){.row-editor,.row-editor--event{grid-template-columns:1fr 1fr;padding-bottom:10px;border-bottom:1px solid var(--border)}}.form-actions{display:flex;flex-wrap:wrap;gap:10px}.form-error{margin:0;padding:10px 12px;border-radius:8px;background:color-mix(in srgb,var(--role-antagonist) 12%,transparent);color:var(--text);white-space:pre-wrap;font-size:.9rem}.notes{padding:14px 16px;border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:var(--radius);background:var(--surface)}.notes__header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.notes__header h3{margin:0}.notes__text{white-space:pre-line}.dialog{width:min(560px,calc(100vw - 32px));max-height:calc(100vh - 32px);padding:24px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text)}.dialog::backdrop{background:#00000073}.steps{margin:0;padding-left:20px}.steps li+li{margin-top:4px}.toast{position:fixed;left:50%;bottom:20px;z-index:20;max-width:calc(100vw - 32px);margin:0;padding:10px 16px;border-radius:999px;background:var(--text);color:var(--bg);font-size:.9rem;transform:translate(-50%);box-shadow:0 6px 20px #0003}
