:root{--bg: #fafaf8;--bg-soft: #ffffff;--ink: #15140f;--ink-soft: #4c4a42;--ink-muted: #8a877d;--line: #ecebe5;--line-2: #e3e1d8;--accent: #a8543b;--danger: #c0392b;--ok: #2e7d32}*{box-sizing:border-box;margin:0;padding:0}html,body,#app{height:100%}body{font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px;color:var(--ink);background:var(--bg)}a{color:inherit}button{cursor:pointer;font:inherit;border:1px solid var(--line-2);background:#fff;padding:8px 14px;border-radius:6px}button.primary{background:var(--ink);color:#fff;border-color:var(--ink)}button.danger{background:var(--danger);color:#fff;border-color:var(--danger)}button:disabled{opacity:.5;cursor:not-allowed}input,textarea,select{font:inherit;padding:8px 10px;border:1px solid var(--line-2);border-radius:6px;background:#fff;width:100%}label{display:block;font-size:12px;color:var(--ink-muted);margin-bottom:4px;text-transform:uppercase;letter-spacing:.08em}.app-shell{display:grid;grid-template-rows:56px 1fr 40px;grid-template-columns:auto 1fr;grid-template-areas:"header header" "side main" "footer footer";height:100vh}.app-header{grid-area:header;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 18px;gap:16px}.app-header .brand{font-weight:600}.app-header .user{margin-left:auto;display:flex;align-items:center;gap:12px;color:var(--ink-muted)}.app-side{grid-area:side;background:#fff;border-right:1px solid var(--line);width:220px;padding:14px 0;transition:width .2s}.app-side.collapsed{width:0;padding:0;overflow:hidden}.app-side a{display:block;padding:10px 18px;text-decoration:none;color:var(--ink)}.app-side a.router-link-active{background:var(--bg);font-weight:600}.app-main{grid-area:main;overflow:auto;padding:24px 28px}.app-footer{grid-area:footer;background:#fff;border-top:1px solid var(--line);display:flex;align-items:center;padding:0 18px;color:var(--ink-muted);font-size:12px}.card{background:#fff;border:1px solid var(--line);border-radius:8px;padding:18px}table{width:100%;border-collapse:collapse;background:#fff}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line)}th{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-muted)}.chip{display:inline-flex;align-items:center;padding:4px 10px;border-radius:999px;border:1px solid var(--line-2);background:transparent;font-size:12px;margin:2px;cursor:pointer}.chip.on{background:var(--ink);color:#fff;border-color:var(--ink)}.login-shell{min-height:100vh;display:grid;place-items:center;background:var(--bg)}.login-card{width:340px;background:#fff;border:1px solid var(--line);padding:28px;border-radius:10px}.login-card h1{font-size:20px;margin-bottom:20px}.login-card label+input{margin-bottom:14px}.login-card button{width:100%;margin-top:8px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.form-row{margin-bottom:16px}.error{color:var(--danger);font-size:12px;margin-top:4px}.authors-fieldset{border:1px solid var(--line-2);border-radius:6px;padding:10px 14px 2px;margin:14px 0}.authors-fieldset legend{padding:0 6px;font-size:12px;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.08em}.authors-fieldset .form-row{margin-bottom:10px}.char-counter{font-size:11px;color:var(--ink-muted);text-align:right;margin-top:2px}.cover-upload{display:flex;flex-direction:column;gap:8px;align-items:flex-start}.cover-preview{display:flex;align-items:flex-start;gap:10px}.cover-preview img{max-width:240px;max-height:180px;object-fit:cover;border-radius:6px;border:1px solid var(--line-2)}.cover-preview .link-btn{background:transparent;border:0;color:var(--accent);font-size:12px;cursor:pointer;padding:4px 0;text-decoration:underline}.year-chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:6px;border:1px solid var(--line-2);border-radius:6px;background:#fff}.year-chips input[type=number]{flex:1;min-width:100px;border:0;outline:none;padding:4px 6px;font-size:13px}.year-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 4px 2px 10px;border-radius:999px;background:var(--ink);color:#fff;font-size:12px}.year-chip button{background:#ffffff26;color:#fff;border:0;width:16px;height:16px;border-radius:50%;line-height:1;font-size:11px;cursor:pointer;display:grid;place-items:center}.year-chip button:hover{background:var(--accent)}.toolbar{display:flex;gap:10px;align-items:center;margin-bottom:18px}.toolbar h2{font-size:18px}.toolbar input,.toolbar select{width:auto}.tt-toolbar{display:flex;gap:4px;flex-wrap:wrap;align-items:center;padding:8px;border:1px solid var(--line-2);border-bottom:0;background:#fff;border-radius:6px 6px 0 0;position:sticky;top:0;z-index:5}.tt-toolbar button{padding:4px 10px;font-size:13px;border-radius:4px}.tt-toolbar button.active{background:var(--ink);color:#fff;border-color:var(--ink)}.tt-toolbar select,.tt-toolbar input[type=color]{width:auto;padding:4px 6px}.tt-toolbar .tt-color{display:inline-flex;align-items:center;gap:2px;border:1px solid var(--line-2);border-radius:4px;padding:2px 6px;cursor:pointer;font-size:13px;background:#fff}.tt-toolbar .tt-color input[type=color]{width:18px;height:18px;border:0;padding:0;background:transparent;cursor:pointer}.tt-content mark{padding:0 2px;border-radius:2px}.tiptap-editor{border:1px solid var(--line-2);border-radius:0 0 6px 6px;background:#fff}.tt-content{padding:12px 14px;min-height:300px}.tt-content :focus{outline:none}.tt-content img{max-width:100%}.tt-content .ProseMirror{min-height:280px;outline:none}.tt-content .is-editor-empty:first-child:before{content:attr(data-placeholder);color:var(--ink-muted);float:left;height:0;pointer-events:none}.tt-content table{border-collapse:collapse;margin:10px 0;width:100%}.tt-content th,.tt-content td{border:1px solid var(--line-2);padding:6px 10px;position:relative;min-width:60px;vertical-align:top}.tt-content th{background:var(--bg);text-align:left}.tt-content pre{background:var(--bg);padding:14px;border-radius:8px;overflow-x:auto;font-family:ui-monospace,monospace;font-size:13px;margin:10px 0}.tt-content code{background:var(--bg);padding:1px 6px;border-radius:4px;font-family:ui-monospace,monospace;font-size:.92em}.tt-content pre code{background:transparent;padding:0}.tt-content a{color:var(--accent);text-decoration:underline}.tt-bubble{display:flex;gap:4px;background:#fff;border:1px solid var(--line-2);border-radius:6px;padding:4px;box-shadow:0 6px 24px #00000014}.tt-bubble button{padding:4px 8px;border-radius:4px;border:0;background:transparent;cursor:pointer}.tt-bubble button.active{background:var(--ink);color:#fff}.tt-image-bubble{background:#fff;border:1px solid var(--line-2);border-radius:6px;padding:8px;display:flex;flex-direction:column;gap:6px;box-shadow:0 6px 24px #00000014;min-width:320px}.tt-image-bubble .row{display:flex;gap:6px;align-items:center}.tt-image-bubble input[type=text]{flex:1;padding:4px 8px;font-size:12px;border:1px solid var(--line-2);border-radius:4px}.tt-image-bubble .char-counter-inline{font-size:10px;color:var(--ink-muted);min-width:44px;text-align:right}.tt-image-bubble .size-picker button{padding:3px 10px;font-size:11px;border:1px solid var(--line-2);border-radius:999px;background:#fff;cursor:pointer}.tt-image-bubble .size-picker button.active{background:var(--ink);color:#fff;border-color:var(--ink)}.tt-content .ProseMirror img[data-size=small]{max-width:33%}.tt-content .ProseMirror img[data-size=medium]{max-width:66%}.tt-content .ProseMirror img[data-size=large],.tt-content .ProseMirror img:not([data-size]){max-width:100%}.tt-content .ProseMirror img[data-size=full]{max-width:100%}.data-table{border:1px solid var(--line);border-radius:8px;overflow:hidden}.chip-row{display:flex;flex-wrap:wrap;gap:6px}.chip input{width:auto;margin-right:6px}
