:root{--bg:#12100d;--bg-panel:#1c1915;--bg-card:#232019;--border:#3a352b;--text:#ece5d8;--text-dim:#a89f8d;--accent:#c9a35c;--accent-dim:#8a6f3d;--link:#d7b877;--danger:#c62828;--radius:10px}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:Georgia,Times New Roman,serif;font-size:16px;line-height:1.55}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}.container{max-width:1100px;margin:0 auto;padding:0 20px 60px}header.site{border-bottom:1px solid var(--border);background:var(--bg-panel);margin-bottom:28px}header.site .inner{max-width:1100px;margin:0 auto;padding:14px 20px;display:flex;align-items:baseline;gap:22px;flex-wrap:wrap}header.site .brand{font-size:20px;letter-spacing:.06em;color:var(--accent);font-feature-settings:"smcp";font-variant:small-caps}header.site nav{display:flex;gap:16px;flex-wrap:wrap}header.site nav a{color:var(--text-dim)}header.site nav a:hover{color:var(--text);text-decoration:none}header.site .spacer{flex:1 1}header.site .user{color:var(--text-dim);font-size:14px}h1{font-size:26px;letter-spacing:.03em}h1,h2{font-weight:400;color:var(--accent)}h2{font-size:20px;margin-top:32px}h3{font-size:17px;color:var(--text)}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;margin:10px 0}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));grid-gap:14px;gap:14px}.badge{display:inline-block;font-size:12px;font-family:system-ui,sans-serif;padding:1px 8px;border-radius:20px;color:#fff;vertical-align:middle}.muted{color:var(--text-dim)}.small{font-size:13px}table.data{border-collapse:collapse;width:100%;font-size:14px;font-family:system-ui,sans-serif}table.data td,table.data th{border-bottom:1px solid var(--border);padding:7px 10px;text-align:left;vertical-align:top}table.data th{color:var(--text-dim);font-weight:500}button,input,select,textarea{font:inherit;color:var(--text);background:var(--bg-panel);border:1px solid var(--border);border-radius:6px;padding:8px 10px}input:focus,select:focus,textarea:focus{outline:1px solid var(--accent-dim)}.btn,button{cursor:pointer;background:var(--accent-dim);border-color:var(--accent-dim);color:#fff;padding:8px 18px}.btn:hover,button:hover{background:var(--accent);border-color:var(--accent)}button.secondary{background:transparent;color:var(--text-dim);border-color:var(--border)}form.inline{display:flex;gap:10px;flex-wrap:wrap;align-items:end}form.inline label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--text-dim)}.stats{display:flex;gap:14px;flex-wrap:wrap;margin:18px 0}.stat{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:14px 22px;min-width:130px}.stat .num{font-size:30px;color:var(--accent)}.stat .lbl{font-size:13px;color:var(--text-dim)}.login-wrap{min-height:80vh;display:flex;align-items:center;justify-content:center}.login-box{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:36px 40px;width:360px;display:flex;flex-direction:column;gap:14px}.login-box h1{margin:0 0 6px;text-align:center}.error{color:#e57373;font-size:14px}.tree-wrap{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-panel);height:78vh;overflow:hidden;position:relative}.tree-hint{position:absolute;top:10px;left:12px;z-index:5;font-size:12px;color:var(--text-dim);font-family:system-ui,sans-serif}.person-line{margin:3px 0}.event-row{margin:6px 0;padding-left:10px;border-left:2px solid var(--border)}