:root{--wood:#2b1a0e;--wood2:#4a2f17;--frame:#6b4410;--parch:#efe2bf;--parch2:#e0cc9a;--ink:#3a2412;--gold:#e8b84a;--gold2:#a86f1c;--muted:#7a5a33;--red:#8e2a1c;--green:#2f6b2f}
*{box-sizing:border-box}
body{margin:0;min-height:100vh;font-family:Georgia,'Times New Roman',serif;color:var(--ink);
background:linear-gradient(180deg,rgba(12,7,3,.62) 0%,rgba(12,7,3,.34) 52%,rgba(12,7,3,.78) 100%),url(/static/bg-sunset.jpg) center 40%/cover fixed,var(--wood);}
.topnav{display:flex;flex-wrap:wrap;align-items:center;gap:6px 18px;padding:12px 24px;background:rgba(43,26,14,.92);
border-bottom:3px solid var(--frame);box-shadow:0 4px 14px rgba(0,0,0,.5)}
.topnav .brand{color:var(--gold);font-size:20px;font-weight:bold;letter-spacing:3px;margin-right:auto}
.topnav a{color:#f1dfb0;text-decoration:none;font-size:15px;padding:4px 2px;border-bottom:2px solid transparent}
.topnav a:hover{color:var(--gold);border-bottom-color:var(--gold)}
.hero{text-align:center;padding:60px 16px 20px}
.hero h1{margin:0;font-size:52px;letter-spacing:6px;color:var(--gold);text-shadow:3px 3px 0 #2b1a0e,0 0 18px rgba(232,184,74,.5)}
.sub{font-style:italic;color:#f1dfb0;margin:8px 0 0}
.actions{display:flex;flex-wrap:wrap;justify-content:center;gap:14px;margin:30px 0 18px}
main{max-width:920px;margin:24px auto;padding:0 16px}
.card{background:linear-gradient(180deg,var(--parch),var(--parch2));
border:3px solid var(--frame);outline:1px solid #2b1a0e;outline-offset:-7px;border-radius:4px;padding:24px;box-shadow:0 10px 30px rgba(0,0,0,.55);max-width:440px;margin:0 auto}
.card.wide{max-width:760px}
h2{margin:0 0 14px;text-align:center;color:var(--ink);font-weight:bold;letter-spacing:2px;text-transform:uppercase;font-size:18px;border-bottom:1px solid var(--frame);padding-bottom:8px}
label{display:block;font-size:14px;color:var(--ink);margin:12px 0 4px;font-weight:bold}
input,select{width:100%;padding:9px 11px;background:#fbf4df;border:2px inset #b89a62;border-radius:2px;color:var(--ink);font-size:15px}
input:focus,select:focus{outline:none;border-color:var(--frame)}
/* one shared button style: site and patcher */
button,.btn{display:inline-block;min-width:200px;margin-top:18px;padding:11px 22px;text-align:center;text-decoration:none;
background:linear-gradient(180deg,#f3d27a 0%,var(--gold) 45%,var(--gold2) 100%);
border:2px solid var(--frame);border-radius:3px;box-shadow:inset 0 1px 0 #fff4c4,inset 0 -2px 0 #7a4e10;
color:#2b1a0e;font-family:Georgia,'Times New Roman',serif;font-size:16px;font-weight:bold;letter-spacing:1px;cursor:pointer}
button{display:block;width:100%}
.actions .btn{margin-top:0}
button:hover,.btn:hover{filter:brightness(1.08)}
button:active,.btn:active{box-shadow:inset 0 2px 4px rgba(0,0,0,.35)}
.msg{padding:9px 12px;border-radius:2px;margin:0 auto 14px;max-width:440px;font-size:14px;border:2px solid}
.ok{background:#d9ecc4;border-color:var(--green);color:#1f4a1f}
.err{background:#f0cbc3;border-color:var(--red);color:#6b1c12}
.info{margin-top:16px;font-size:14px;color:#f1dfb0;text-align:center}
table{width:100%;border-collapse:collapse;font-size:15px}
th,td{padding:7px 8px;text-align:left;border-bottom:1px solid #c9b07a}
th{color:var(--ink);text-transform:uppercase;font-size:13px;letter-spacing:1px}
tbody tr:nth-child(odd){background:rgba(255,255,255,.25)}
.notes{white-space:pre-wrap;font-family:Georgia,'Times New Roman',serif;font-size:15px;line-height:1.5;margin:0}
footer{text-align:center;color:#c9b07a;font-size:12px;padding:26px 0}

/* online status in rankings */
.online { color: #6fd36f; font-weight: bold; }
.offline { color: #888; }

/* mob database */
.search{width:100%;max-width:360px;padding:8px;margin:6px 0 10px;border-radius:6px;border:1px solid #555;background:#1b1b1b;color:#eee}
.tablewrap{overflow-x:auto}
table.mobs{width:100%;border-collapse:collapse;font-size:13px}
table.mobs th{cursor:pointer;text-align:left;padding:6px;border-bottom:2px solid #666;user-select:none;white-space:nowrap}
table.mobs th:hover{color:#ffd77a}
table.mobs td{padding:5px 6px;border-bottom:1px solid #333;white-space:nowrap}
table.mobs tbody tr[data-id]{cursor:pointer}
table.mobs tbody tr[data-id]:hover{background:#2a2a2a}
table.mobs .drow td{white-space:normal;background:#1d1d1d}
.mdetail ul{margin:4px 0 0 18px;padding:0}
.mdetail li{margin:2px 0}

/* mob detail row: light text on dark background, wraps instead of overflowing */
table.mobs .drow td{color:#eee;background:#1d1d1d;white-space:normal;padding:12px 14px;border-bottom:2px solid #666}
table.mobs .drow .mdetail{color:#eee;line-height:1.55;font-size:14px;word-break:break-word;max-width:100%}
table.mobs .drow .mdetail b{color:#ffd77a}
table.mobs .drow .mdetail ul{columns:2;column-gap:24px;margin:6px 0 0 18px;padding:0}
table.mobs .drow .mdetail li{margin:2px 0;break-inside:avoid}

/* selected/hovered mob row: keep dark text on a light highlight */
table.mobs tbody tr[data-id]:hover td,
table.mobs tbody tr[data-id]:focus td{background:#f3dc9c;color:#2a1a05}
/* mob detail: long drop list scrolls inside the row instead of overflowing */
table.mobs .drow td{min-width:640px}
table.mobs .drow .mdetail ul{max-height:280px;overflow-y:auto;padding-right:8px}
table.mobs .drow .mdetail{max-width:100%;overflow:hidden}
/* info text inside the light parchment card: dark ink instead of light */
.card .info{color:#5b4423}
table.mobs .drow .mdetail .iid{color:#9a8a6a;font-size:12px}
/* mob detail: fit the visible table area, not the full (wider) table width */
.tablewrap{container-type:inline-size}
table.mobs .drow td{min-width:0}
table.mobs .drow .mdetail{position:sticky;left:14px;box-sizing:border-box;width:calc(100cqw - 28px);overflow:visible}
/* mob filters: one per row, label on the left, field on the right */
.filters{display:grid;grid-template-columns:140px 1fr;gap:8px 12px;align-items:center;max-width:560px;margin:14px auto 16px}
.filters label{text-align:right;font-weight:bold;color:var(--ink);margin:0}
.filters input{margin:0}
.filters .lvrange{display:flex;align-items:center;gap:8px}
.filters .lvrange input{max-width:120px}
@media (max-width:520px){.filters{grid-template-columns:1fr}.filters label{text-align:left}}
.card h3{margin:20px 0 8px;text-align:center;color:var(--ink);font-size:15px;letter-spacing:1px;text-transform:uppercase}
/* rankings switcher */
.tabs{display:flex;justify-content:center;gap:6px;margin:0 0 16px;border-bottom:1px solid var(--frame)}
.tabs a{padding:8px 18px;text-decoration:none;color:var(--ink);border:1px solid transparent;border-bottom:none;border-radius:3px 3px 0 0;margin-bottom:-1px;font-weight:bold}
.tabs a:hover{background:rgba(0,0,0,.05)}
.tabs a.active{background:#fbf4df;border-color:var(--frame)}
/* GM commands page */
table.gmcmds td{vertical-align:top;line-height:1.5}
table.gmcmds td.cmd{white-space:nowrap;width:1%}
table.gmcmds td.cmd code{font-weight:bold;color:var(--red)}
table.gmcmds .syn{margin-bottom:4px}
.card code{font-family:Consolas,'Courier New',monospace;font-size:13px;background:rgba(255,255,255,.45);padding:1px 4px;border-radius:2px}
@media (max-width:520px){table.gmcmds thead{display:none}table.gmcmds td{display:block;border:none}table.gmcmds tr{border-bottom:1px solid #c9b07a;display:block;padding:6px 0}}

/* ссылки внутри пергаментных карточек */
.card a{color:#8a5a12;text-decoration:underline}
.card a:hover{color:var(--red)}
/* карточка предмета */
.itemname{text-align:center;font-size:19px;font-weight:bold;margin:-4px 0 14px;color:var(--ink)}
table.kv{max-width:520px;margin:0 auto 6px}
table.kv th{width:45%;color:var(--muted)}
table.kv th,table.kv td{border-bottom:1px solid #cdb27c}
/* пометка MVP / id предмета в светлых таблицах */
.iid{color:#8a6b3a;font-size:12px;letter-spacing:1px}
.card td a{word-break:break-word}
/* онлайн в шапке */
.onbadge{font-size:12px;letter-spacing:1px;padding:3px 10px;border:1px solid #6b4410;border-radius:12px;
background:rgba(0,0,0,.25);color:#d9c79a;white-space:nowrap}
.onbadge.good{color:#b8f0a0;border-color:#4a7a3a}
.onbadge.idle{color:#d9c79a}
.onbadge.bad{color:#f0a090;border-color:#8e2a1c}
/* поиск по базе: в шапке и на странице /db */
.navsearch{display:flex;align-items:center;gap:4px}
.navsearch input{width:210px;padding:4px 8px;font-size:13px;background:#fbf4df;border:1px solid var(--frame);border-radius:3px;color:var(--ink)}
.navsearch button{width:auto;min-width:0;margin:0;padding:4px 10px;font-size:13px;display:inline-block}
@media (max-width:760px){.navsearch input{width:130px}}
.bigsearch{display:flex;gap:8px;max-width:560px;margin:0 auto 16px}
.bigsearch input{flex:1;padding:9px 11px}
.bigsearch button{width:auto;min-width:0;margin:0}
/* ловушка для ботов в форме регистрации — не видна людям */
.hp{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}
/* фильтр списка карт */
.hidden{display:none}

/* главная: две колонки */
.cols2{display:grid;grid-template-columns:1fr 1fr;gap:18px;max-width:920px;margin:26px auto;padding:0 16px;align-items:start}
.cols2 .card{max-width:none;margin:0}
.news-list{list-style:none;margin:0;padding:0}
.news-list li{padding:9px 0;border-bottom:1px dashed #c9b07a;font-size:15px;display:flex;gap:10px}
.news-list li:last-child{border-bottom:0}
.news-list .when{color:var(--muted);font-size:12px;min-width:66px;padding-top:3px}
.news-list a{color:#7a4e10;text-decoration:none}
.news-list a:hover{text-decoration:underline}
.card .more{text-align:right;margin:10px 0 0;font-size:14px}
.card table{font-size:15px}
@media (max-width:820px){.cols2{grid-template-columns:1fr}}
