:root{--bg: #fbfbfa;--fg: #23201c;--muted: #6b6b6b;--line: #e2ded7;--panel: #ffffff;--accent: #3b6ea5;--c1: #d1495b;--c2: #2a8c82;--c3: #c9791f;--c4: #6a51a3;--c5: #3f7d3f;color-scheme:light;font-family:system-ui,-apple-system,Hiragino Sans,Noto Sans JP,sans-serif;color:var(--fg)}*{box-sizing:border-box}body{margin:0;background:var(--bg)}.app-container{display:flex;flex-direction:column;height:100vh;min-height:0}.app-header{display:flex;align-items:center;gap:.75rem;padding:.5rem 1rem;border-bottom:1px solid var(--line);background:var(--panel)}.app-title{font-weight:700;letter-spacing:.02em}.badge{font-size:.78rem;color:#1f6f3f;background:#eaf6ee;border:1px solid #bfe3ca;border-radius:999px;padding:.15rem .6rem;cursor:pointer}.badge:hover{background:#ddf0e3}.app-footer{display:flex;gap:1rem;flex-wrap:wrap;padding:.5rem 1rem;border-top:1px solid var(--line);background:var(--panel);font-size:.82rem}.foot-link{color:var(--accent);text-decoration:none;background:none;border:none;cursor:pointer;padding:0;font:inherit}.foot-link:hover{text-decoration:underline}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;padding:1rem;z-index:100}.modal{background:var(--panel);border-radius:10px;max-width:34rem;width:100%;max-height:80vh;overflow:auto;box-shadow:0 10px 40px #0003}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:.7rem 1rem;border-bottom:1px solid var(--line)}.modal-title{font-size:1rem;margin:0}.modal-close{border:none;background:none;font-size:1.4rem;line-height:1;cursor:pointer;color:var(--muted)}.modal-body{padding:1rem;font-size:.9rem;line-height:1.7}.modal-body p{margin:0 0 .7rem}.modal-body .lead{font-weight:700;font-size:1.05rem}.oss-list{margin:.3rem 0;padding-left:1.2rem}.oss-list li{margin-bottom:.3rem}.stats-canvas{display:block;width:100%;max-width:100%;border:1px solid var(--line);border-radius:6px;margin-bottom:.6rem}.autosave-bar{padding:.4rem 1rem;border-bottom:1px solid var(--line);background:var(--panel);font-size:.82rem;color:var(--muted)}.toast{position:fixed;bottom:1.2rem;left:50%;transform:translate(-50%) translateY(1rem);background:#23201c;color:#fff;padding:.6rem 1rem;border-radius:8px;font-size:.85rem;opacity:0;transition:opacity .25s,transform .25s;z-index:200}.toast.show{opacity:.95;transform:translate(-50%) translateY(0)}.toolbar{display:flex;align-items:center;gap:.75rem;padding:.5rem 1rem;border-bottom:1px solid var(--line)}button.primary{background:var(--accent);color:#fff;border:none;border-radius:6px;padding:.4rem 1rem;font-size:.95rem;cursor:pointer}button.primary:disabled{opacity:.55;cursor:default}button.ghost{background:#fff;border:1px solid var(--line);color:var(--fg);border-radius:6px;padding:.35rem .7rem;font-size:.85rem;cursor:pointer}.status{color:var(--muted);font-size:.85rem}.dict-io{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center}.serial-finding{border:1px solid var(--line);border-radius:6px;padding:.5rem .6rem;margin-top:.4rem}.serial-finding-head{font-weight:700;font-size:.85rem;margin-bottom:.25rem}.serial-variant{font-size:.82rem}#progress{width:140px;height:8px}.settings{border-bottom:1px solid var(--line);background:var(--panel);font-size:.85rem}.settings>summary{padding:.45rem 1rem;cursor:pointer;color:var(--muted);-webkit-user-select:none;user-select:none}.settings-body{padding:.25rem 1rem .75rem;display:flex;flex-direction:column;gap:.4rem}.set-row{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem .9rem}.cat-row{border-top:1px dashed var(--line);padding-top:.4rem}.chk{display:inline-flex;align-items:center;gap:.25rem;white-space:nowrap}.num{display:inline-flex;align-items:center;gap:.25rem;color:var(--muted)}.num input{width:3.5rem}.chip{border:1px solid var(--accent);color:var(--accent);background:#fff;border-radius:999px;padding:.2rem .7rem;font-size:.82rem;cursor:pointer}.chip:hover{background:#eef3f9}.dict-body{padding:.25rem 1rem .75rem;display:flex;flex-direction:column;gap:.5rem;font-size:.85rem}.dict-head{color:var(--muted)}.dict-list{display:flex;flex-wrap:wrap;gap:.35rem}.dict-chip{display:inline-flex;align-items:center;gap:.3rem;background:#f1efe9;border:1px solid var(--line);border-radius:999px;padding:.1rem .3rem .1rem .6rem}.dict-rm{border:none;background:none;color:var(--muted);cursor:pointer;font-size:1rem;line-height:1;padding:0 .2rem}.dict-add{display:flex;gap:.4rem}.dict-add input{flex:1;max-width:20rem;padding:.3rem .5rem;border:1px solid var(--line);border-radius:6px}.dict-notice{margin:0;color:var(--c1);font-size:.82rem}.lic-status{margin:0;font-size:.85rem}.lic-drop{border:1px dashed var(--line);border-radius:6px;padding:.6rem;color:var(--muted);font-size:.82rem;text-align:center}.lic-drop.over{border-color:var(--accent);color:var(--accent)}.lic-input{width:100%;max-width:32rem;border:1px solid var(--line);border-radius:6px;padding:.4rem;font-family:inherit;resize:vertical}.lic-notice{margin:0;color:var(--accent);font-size:.82rem}.tabs{display:flex;border-bottom:1px solid var(--line);background:var(--panel)}.tab{flex:1;border:none;background:transparent;padding:.6rem;font-size:.9rem;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent}.tab[aria-selected=true]{color:var(--fg);border-bottom-color:var(--accent)}.app-main{flex:1;min-height:0;display:grid;gap:1px;background:var(--line)}.pane{min-height:0;overflow:auto;background:var(--panel)}@media(min-width:769px){.app-main{grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;grid-template-areas:"edit highlight" "edit list"}.pane-edit{grid-area:edit}.pane-highlight{grid-area:highlight}.pane-list{grid-area:list}.pane-vertical{display:none}.app-container[data-tab=vertical] .app-main{grid-template-columns:1fr;grid-template-rows:1fr;grid-template-areas:"v"}.app-container[data-tab=vertical] .pane-edit,.app-container[data-tab=vertical] .pane-highlight,.app-container[data-tab=vertical] .pane-list{display:none}.app-container[data-tab=vertical] .pane-vertical{display:block;grid-area:v}}#editor{width:100%;height:100%;border:none;resize:none;padding:1rem;font-family:inherit;font-size:1rem;line-height:1.9;outline:none;background:var(--panel);color:var(--fg)}.highlight-view{padding:1rem;white-space:pre-wrap;word-break:break-word;line-height:1.9;font-size:1rem}.hl{cursor:pointer;border-radius:2px}.hl.active{background:#fff3bf}.hl.cat-c1{text-decoration:underline wavy var(--c1)}.hl.cat-c2{text-decoration:underline dotted var(--c2)}.hl.cat-c3{text-decoration:underline double var(--c3)}.hl.cat-c4{text-decoration:underline dashed var(--c4)}.hl.cat-c5{text-decoration:underline solid var(--c5)}.issue-list{padding:.5rem .75rem}.group-title{font-size:.82rem;margin:.75rem 0 .35rem;padding-left:.4rem;border-left:4px solid var(--muted)}.group-title.cat-c1{border-left-color:var(--c1)}.group-title.cat-c2{border-left-color:var(--c2)}.group-title.cat-c3{border-left-color:var(--c3)}.group-title.cat-c4{border-left-color:var(--c4)}.group-title.cat-c5{border-left-color:var(--c5)}.issue-item{border:1px solid var(--line);border-radius:6px;padding:.5rem .6rem;margin-bottom:.4rem;cursor:pointer}.issue-item.active{border-color:var(--accent);box-shadow:0 0 0 2px #3b6ea526}.issue-item[data-severity=info]{opacity:.9}.issue-msg{font-size:.9rem}.issue-actions{display:flex;gap:.75rem;margin-top:.35rem}button.link{border:none;background:none;color:var(--accent);font-size:.8rem;cursor:pointer;padding:0}.empty{color:var(--muted);padding:1rem}@media(max-width:768px){.app-main{grid-template-columns:1fr;grid-template-rows:1fr;grid-template-areas:"p"}.pane{grid-area:p;display:none}.app-container[data-tab=edit] .pane-edit,.app-container[data-tab=highlight] .pane-highlight,.app-container[data-tab=list] .pane-list,.app-container[data-tab=vertical] .pane-vertical{display:block}}.vpreview{writing-mode:vertical-rl;-webkit-writing-mode:vertical-rl;height:100%;padding:1.25rem;overflow-x:auto;overflow-y:hidden;white-space:pre-wrap;font-size:1.15rem;line-height:2;background:var(--panel)}.vpreview ruby>rt{font-size:.5em;color:var(--muted)}.vpreview .tcy{text-combine-upright:all;-webkit-text-combine:horizontal}.vpreview .bouten{text-emphasis:filled dot;-webkit-text-emphasis:filled dot;text-emphasis-position:right;-webkit-text-emphasis-position:right}
