/* SAN AVELIO / CHRONICA VITAE v7 — independent timeline module */ (function(){ 'use strict'; if(window.__SA_CHRONICA_V7__)return;window.__SA_CHRONICA_V7__=true; if(!/\/profile\.php$/i.test(location.pathname)||new URLSearchParams(location.search).has('section'))return; var APP=1887506,API=location.origin+'/api.php',PREFIX='SACHRON1:',source=null,host=null,list=null,add=null,mode='timeline',order='desc',modal=null,rawLast=null,writing=false; var collapsedYears={},shown=12,loadedServer=false; function cleanEntities(v){ var s=String(v==null?'':v); for(var pass=0;pass<3;pass++){ var next=s.replace(/&#(?:x([0-9a-f]+)|([0-9]+));?/gi,function(all,h,d){var cp=parseInt(h||d,h?16:10);return cp>0&&cp<=1114111?String.fromCodePoint(cp):all}) .replace(/&(?:amp|quot|apos|lt|gt|nbsp);/gi,function(x){return ({'&':'&','"':'"',''':String.fromCharCode(39),'<':'<','>':'>',' ':' '})[x.toLowerCase()]||x}); if(next===s)break;s=next; } return s; } function n(tag,cls,txt){var e=document.createElement(tag);if(cls)e.className=cls;if(txt!==undefined)e.textContent=cleanEntities(txt);return e} function uid(){return (new URLSearchParams(location.search).get('id')||'').replace(/\D/g,'')} function owner(){return !!(source&&source.classList.contains('sa40-edit'))||!!(document.querySelector('#sa-dossier-clean .panel[data-p="bio"] .sa40-edit'))} function validUrl(s){try{var u=new URL(s,location.origin);return /^https?:$/.test(u.protocol)?u.href:''}catch(e){return ''}} function parse(s){ s=String(s||'').trim(); if(s.indexOf(PREFIX)===0){try{var a=JSON.parse(s.slice(PREFIX.length));if(Array.isArray(a))return a.filter(function(x){return x&&typeof x.title==='string'}).slice(0,400)}catch(e){}} if(!s||s==='—'||/нажмите, чтобы заполнить|пока нет|хроника персонажа пока не заполнена/i.test(s))return []; return s.split(/\n+/).map(function(line){var parts=line.split(/\s*[||]\s*/);return {date:parts.length>1?parts[0].trim():'',title:(parts.length>1?parts[1]:line).trim(),url:parts[2]||'',status:'done',people:'',desc:''}}).filter(function(x){return x.title}); } function encode(a){return PREFIX+JSON.stringify(a)} function api(method,params){var $=window.jQuery||window.$;if(!$||!$.ajax)return Promise.reject(Error('Нет доступа к API'));return new Promise(function(ok,fail){$.ajax({url:API,type:method==='storage.get'?'GET':'POST',dataType:'json',cache:false,data:Object.assign({method:method,app_id:APP},params),success:function(j){if(j&&(j.error||j.errors))fail(Error('Сервер отклонил запрос'));else ok(j)},error:function(x){fail(Error('Ошибка сети: '+x.status))}})})} function read(){var k='san_avelio_profile_v1_'+uid();return api('storage.get',{key:[k],_:Date.now()}).then(function(j){var v=j&&j.response&&j.response.storage&&j.response.storage.data&&j.response.storage.data[k];if(!v)throw Error('Профиль ещё не опубликован');return typeof v==='string'?JSON.parse(v):v})} async function save(items,original){if(!owner())throw Error('Нет права редактирования');var token=String(window.ForumAPITicket||'');if(!token)throw Error('Нет токена авторизации');var k='san_avelio_profile_v1_'+uid(),data=await read();if(String(data.chronicle||'')!==String(original||''))throw Error('Хроника изменилась. Обновите страницу');data.chronicle=encode(items);await api('storage.set',{key:k,value:JSON.stringify(data),token:token});var check=await read();if(check.chronicle!==data.chronicle)throw Error('Сервер не подтвердил сохранение');source.textContent=data.chronicle;rawLast=null;draw()} function iso(s){var m=/^(\d{4})-(\d\d)-(\d\d)$/.exec(s||'');return m?+m[1]*10000+(+m[2])*100+(+m[3]):0} function dateLabel(s){if(!/^\d{4}-\d\d-\d\d$/.test(s||''))return s||'Дата не указана';var p=s.split('-');return +p[2]+' '+['января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря'][+p[1]-1]+' '+p[0]} function statusText(v){return ({active:'Идёт игра',done:'Завершён',paused:'Приостановлен',archive:'Архив'})[v]||'Без статуса'} function card(x,index){ var article=n('article','sa-ch-card'),meta=n('div','sa-ch-meta'); meta.append(n('span','sa-ch-date',dateLabel(x.date)),n('span','sa-ch-status sa-ch-status-'+(x.status||'done'),statusText(x.status))); var heading=n('h3','sa-ch-card-title'),url=validUrl(x.url); if(url){var a=n('a','',x.title);a.href=url;a.target='_blank';a.rel='noopener noreferrer';heading.append(a)}else heading.textContent=cleanEntities(x.title); article.append(meta,heading); if(x.desc)article.append(n('p','sa-ch-desc',x.desc)); if(x.people){var ppl=n('div','sa-ch-people','Участники: '+x.people);article.append(ppl)} var bottom=n('div','sa-ch-bottom'); if(url){var jump=n('a','sa-ch-jump','Перейти к эпизоду');jump.href=url;jump.target='_blank';jump.rel='noopener noreferrer';bottom.append(jump)} if(owner()){var edit=n('button','sa-ch-edit','Изменить');edit.type='button';edit.onclick=function(){editEpisode(index)};bottom.append(edit)} if(bottom.childNodes.length)article.append(bottom); return article; } function draw(){ if(!source||!list||modal||!loadedServer)return; var raw=source.textContent;if(raw===rawLast)return;rawLast=raw; var data=parse(raw).map(function(x,i){return {x:x,index:i}}).sort(function(a,b){return (iso(b.x.date)-iso(a.x.date))*(order==='desc'?1:-1)}); list.replaceChildren();if(add)add.hidden=!owner(); if(!data.length){list.append(n('div','sa-ch-empty','Пока ни одного эпизода. Каждая история начинается с первой страницы.'));return} if(mode==='compact'){ var compact=n('div','sa-ch-compact');data.forEach(function(v){var row=n('div','sa-ch-compact-row'),d=n('span','',dateLabel(v.x.date)),name=n('span','');var u=validUrl(v.x.url);if(u){var a=n('a','',v.x.title);a.href=u;a.target='_blank';a.rel='noopener noreferrer';name.append(a)}else name.textContent=cleanEntities(v.x.title);row.append(d,name,n('span','',statusText(v.x.status)));if(owner()){var e=n('button','','Изменить');e.type='button';e.onclick=function(){editEpisode(v.index)};row.append(e)}compact.append(row)});list.append(compact);return} var groups={};data.forEach(function(v){var y=/^\d{4}/.test(v.x.date||'')?v.x.date.slice(0,4):'Без даты';(groups[y]||(groups[y]=[])).push(v)}); Object.keys(groups).forEach(function(year){ var group=n('section','sa-ch-year'),yearButton=n('button','sa-ch-year-toggle'),yearLabel=n('span','',year),count=n('small','',groups[year].length+' эп.'),arrow=n('span','sa-ch-year-arrow',collapsedYears[year]?'+':'-'); yearButton.type='button';yearButton.append(yearLabel,count,arrow);yearButton.setAttribute('aria-expanded',String(!collapsedYears[year]));yearButton.onclick=function(){collapsedYears[year]=!collapsedYears[year];rawLast=null;draw()}; group.append(yearButton); if(!collapsedYears[year]){var track=n('div','sa-ch-track');groups[year].forEach(function(v){var wrap=n('div','sa-ch-item'),dot=n('span','sa-ch-dot');wrap.append(dot,card(v.x,v.index));track.append(wrap)});group.append(track)} list.append(group); }); setupAnimation(); } function setupAnimation(){ if(!('IntersectionObserver' in window))return; var obs=new IntersectionObserver(function(entries){entries.forEach(function(e){if(e.isIntersecting){e.target.classList.add('sa-ch-visible');obs.unobserve(e.target)}})},{threshold:.08}); list.querySelectorAll('.sa-ch-item').forEach(function(e){obs.observe(e)}); } function close(){if(modal){modal.remove();modal=null;rawLast=null;draw()}} function editEpisode(index){ if(!owner()||modal||writing)return; var original=source.textContent,items=parse(original),isNew=index==null,x=isNew?{date:'',title:'',url:'',status:'active',people:'',desc:''}:Object.assign({},items[index]); var overlay=n('div','sa-ch-overlay'),dialog=n('section','sa-ch-dialog');dialog.setAttribute('role','dialog');dialog.setAttribute('aria-modal','true');dialog.setAttribute('aria-label','Редактор эпизода'); var top=n('header','sa-ch-modalhead'),tit=n('div');tit.append(n('small','','SAN AVELIO / CHRONICA VITAE'),n('h2','',isNew?'Новый эпизод':'Изменить эпизод')); var closeButton=n('button','sa-ch-close','Закрыть');closeButton.type='button';closeButton.onclick=close;top.append(tit,closeButton); var form=n('div','sa-ch-form'),fields={}; function field(label,key,tag,placeholder){var l=n('label','sa-ch-label',label),e=n(tag,'sa-ch-input');e.placeholder=placeholder||'';e.value=x[key]||'';if(key==='date')e.type='date';e.maxLength=key==='desc'?1200:250;l.append(e);form.append(l);fields[key]=e} field('Название эпизода','title','input','Тени над старой гаванью'); field('Ссылка на игровую тему или сообщение','url','input','https://tesst235.rusff.me/viewtopic.php?id=...'); var line=n('div','sa-ch-formrow'),dateBox=n('div'),statusBox=n('div'); var dl=n('label','sa-ch-label','Внутриигровая дата'),date=n('input','sa-ch-input');date.type='date';date.value=/^\d{4}-\d\d-\d\d$/.test(x.date)?x.date:'';dateBox.append(dl,date); var sl=n('label','sa-ch-label','Статус'),select=n('select','sa-ch-input');[['active','Идёт игра'],['done','Завершён'],['paused','Приостановлен'],['archive','Архив']].forEach(function(v){var o=n('option','',v[1]);o.value=v[0];select.append(o)});select.value=x.status||'active';statusBox.append(sl,select);line.append(dateBox,statusBox);form.append(line); field('Участники (необязательно)','people','input','Имена персонажей через запятую'); field('Аннотация (необязательно)','desc','textarea','Несколько слов о том, что произошло...'); var message=n('div','sa-ch-message',''),foot=n('footer','sa-ch-foot'),left=n('div','sa-ch-left'); if(!isNew){var del=n('button','sa-ch-danger','Удалить эпизод');del.type='button';del.onclick=function(){if(confirm('Удалить этот эпизод из хроники?'))submit(true)};left.append(del)} var cancel=n('button','sa-ch-secondary','Отмена'),submitButton=n('button','sa-ch-primary','Сохранить эпизод');cancel.type=submitButton.type='button';cancel.onclick=close;submitButton.onclick=function(){submit(false)};foot.append(left,cancel,submitButton); dialog.append(top,form,message,foot);overlay.append(dialog);document.body.append(overlay);modal=overlay;fields.title.focus(); overlay.onclick=function(e){if(e.target===overlay&&!writing)close()}; async function submit(remove){ if(writing)return; var title=fields.title.value.trim(),url=fields.url.value.trim(); if(!remove&&!title){message.textContent='Укажите название эпизода';return} if(!remove&&url&&!validUrl(url)){message.textContent='Проверьте ссылку на эпизод';return} var next=items.slice(); if(remove)next.splice(index,1); else{var record={title:title,url:url,date:date.value,status:select.value,people:fields.people.value.trim(),desc:fields.desc.value.trim()};if(isNew)next.push(record);else next[index]=record} writing=true;cancel.disabled=submitButton.disabled=true;message.textContent='Сохраняем на сервере...'; try{await save(next,original);writing=false;close()}catch(e){writing=false;cancel.disabled=submitButton.disabled=false;message.textContent='Не сохранено: '+e.message} } } function css(){ if(document.getElementById('sa-ch-css'))return; var s=n('style');s.id='sa-ch-css';s.textContent=` #sa-dossier-clean .panel[data-p="chr"] > .sa-ch-legacy,#sa-dossier-clean .panel[data-p="log"] > .sa-ch-legacy,#sa-dossier-clean .panel[data-p="chronicle"] > .sa-ch-legacy{display:none!important} #sa-dossier-clean .panel[data-p="chr"] .sa-ch-original,#sa-dossier-clean .panel[data-p="log"] .sa-ch-original,#sa-dossier-clean .panel[data-p="chronicle"] .sa-ch-original{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;overflow:hidden!important;pointer-events:none!important;padding:0!important;margin:0!important} #sa-dossier-clean .sa-ch-root{width:100%;box-sizing:border-box;padding:4px 0 24px;color:#5a422b} #sa-dossier-clean .sa-ch-head{display:flex;align-items:center;justify-content:space-between;gap:15px;border-bottom:1px solid #bda27b;padding:16px 5px 21px} #sa-dossier-clean .sa-ch-kicker{font:700 9px Arial,sans-serif;letter-spacing:2px;color:#95703e} #sa-dossier-clean .sa-ch-title{font:normal 30px/1.2 Georgia,serif;color:#754822;margin:7px 0} #sa-dossier-clean .sa-ch-sub{font:13px/1.5 Georgia,serif;color:#8a7459} #sa-dossier-clean .sa-ch-add{flex-shrink:0;cursor:pointer;background:linear-gradient(#eed09f,#c89a57);border:1px solid #b78a50;color:#3e2917;font:700 10px Arial,sans-serif;letter-spacing:.6px;padding:14px 17px;box-shadow:0 5px 13px #3c241222} #sa-dossier-clean .sa-ch-tools{display:flex;gap:8px;justify-content:flex-end;padding:18px 4px 0} #sa-dossier-clean .sa-ch-tool{cursor:pointer;border:1px solid #bca37e;background:#f5ead4;color:#785735;padding:7px 11px;font:11px Georgia,serif} #sa-dossier-clean .sa-ch-tool.active{background:#143237;color:#e5c68e;border-color:#143237} #sa-dossier-clean .sa-ch-year{margin:21px 0 14px} #sa-dossier-clean .sa-ch-year-toggle{width:100%;display:flex;align-items:center;gap:12px;text-align:left;border:0;border-bottom:1px solid #b89b6e;background:transparent;padding:8px 5px 12px;cursor:pointer;color:#85552d;font:normal 25px Georgia,serif} #sa-dossier-clean .sa-ch-year-toggle small{font:10px Arial,sans-serif;color:#92765a} #sa-dossier-clean .sa-ch-year-arrow{margin-left:auto;font-size:20px} #sa-dossier-clean .sa-ch-track{position:relative;padding:17px 0 5px 34px} #sa-dossier-clean .sa-ch-track:before{content:"";position:absolute;left:13px;top:0;bottom:0;width:2px;background:linear-gradient(#ad8149,#e0cba6 40%,#b28a52);box-shadow:0 0 6px #e6b97870} #sa-dossier-clean .sa-ch-item{position:relative;margin:0 0 18px;opacity:1;transform:none} #sa-dossier-clean .sa-ch-dot{position:absolute;left:-28px;top:28px;width:12px;height:12px;box-sizing:border-box;border:2px solid #a5763c;border-radius:50%;background:#f4e4c5;box-shadow:0 0 0 4px #ecd5ab;transition:background .35s,box-shadow .35s} #sa-dossier-clean .sa-ch-item:hover .sa-ch-dot{background:#b58a4d;box-shadow:0 0 0 6px #d8b77e88,0 0 15px #c69b50} #sa-dossier-clean .sa-ch-card{padding:20px 24px 19px;background:linear-gradient(125deg,#fbf0dc,#ead8b9);border:1px solid #c7a87c;box-shadow:0 6px 17px #4d301719;transition:transform .3s,box-shadow .3s} #sa-dossier-clean .sa-ch-card:hover{transform:translateY(-3px);box-shadow:0 11px 22px #4d30172b} #sa-dossier-clean .sa-ch-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap} #sa-dossier-clean .sa-ch-date{font:700 10px Arial,sans-serif;letter-spacing:1.3px;text-transform:uppercase;color:#936e3f} #sa-dossier-clean .sa-ch-status{font:10px Georgia,serif;color:#795c3e;border-bottom:1px solid #bba17b;padding:4px 1px} #sa-dossier-clean .sa-ch-status-active{color:#39745e;border-color:#7e9e84} #sa-dossier-clean .sa-ch-status-paused{color:#98673e} #sa-dossier-clean .sa-ch-card-title{font:normal 24px/1.3 Georgia,serif;margin:12px 0;color:#704322} #sa-dossier-clean .sa-ch-card-title a{color:inherit;text-decoration:none;border-bottom:1px solid transparent} #sa-dossier-clean .sa-ch-card-title a:hover{border-color:#ad7f42} #sa-dossier-clean .sa-ch-desc{font:14px/1.65 Georgia,serif;color:#624d38;margin:0 0 10px;white-space:pre-wrap;overflow-wrap:anywhere} #sa-dossier-clean .sa-ch-people{font:11px Georgia,serif;color:#8b6c48;margin-top:8px} #sa-dossier-clean .sa-ch-bottom{display:flex;gap:17px;margin-top:15px;align-items:center} #sa-dossier-clean .sa-ch-jump,#sa-dossier-clean .sa-ch-edit{border:0;border-bottom:1px solid #b78c56;background:none;padding:0 0 3px;cursor:pointer;color:#885a2f;font:12px Georgia,serif;text-decoration:none} #sa-dossier-clean .sa-ch-empty{padding:45px;text-align:center;font:15px Georgia,serif;color:#8a7050} #sa-dossier-clean .sa-ch-compact{margin-top:20px;border-top:1px solid #bda27b} #sa-dossier-clean .sa-ch-compact-row{display:grid;grid-template-columns:155px minmax(0,1fr) 110px auto;gap:12px;align-items:center;padding:13px 8px;border-bottom:1px solid #d5bea0;font:13px Georgia,serif} #sa-dossier-clean .sa-ch-compact-row a{color:#7e4c28} #sa-dossier-clean .sa-ch-compact-row button{background:transparent;border:0;color:#865d34;text-decoration:underline;cursor:pointer} .sa-ch-overlay{position:fixed;inset:0;z-index:2147483000;display:flex;align-items:center;justify-content:center;padding:20px;background:#05191dd9;backdrop-filter:blur(5px);box-sizing:border-box} .sa-ch-dialog{display:flex;flex-direction:column;width:min(740px,100%);max-height:92vh;background:#f1e1c4;border:1px solid #c59a5a;box-shadow:0 25px 80px #0009,0 0 0 7px #0c292d;color:#58422e;overflow:hidden;font-family:Georgia,serif} .sa-ch-modalhead{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:23px 28px;background:linear-gradient(110deg,#0b262a,#17373a);border-bottom:2px solid #b99050} .sa-ch-modalhead small{font:700 9px Arial,sans-serif;letter-spacing:2px;color:#cba16c} .sa-ch-modalhead h2{font:normal 29px Georgia,serif;color:#f5e3c4;margin:7px 0 0} .sa-ch-close{background:transparent;border:1px solid #b58b56;color:#e9c993;font:23px Georgia,serif;cursor:pointer;width:35px;height:35px} .sa-ch-form{padding:24px 28px;overflow:auto} .sa-ch-label{display:block;margin-bottom:16px;color:#865f38;font:700 10px Arial,sans-serif;letter-spacing:.7px} .sa-ch-input{box-sizing:border-box;width:100%;display:block;margin-top:7px;padding:11px 13px;border:1px solid #c5a679;background:#fff9ed;color:#4c3a29;font:14px Georgia,serif;outline:none;border-radius:0} .sa-ch-input:focus{border-color:#966b35;box-shadow:0 0 0 3px #b58c4d30} textarea.sa-ch-input{min-height:100px;resize:vertical} .sa-ch-formrow{display:grid;grid-template-columns:1fr 1fr;gap:15px} .sa-ch-message{min-height:19px;padding:0 28px;font:12px Georgia,serif;color:#a34d3a} .sa-ch-foot{display:flex;align-items:center;gap:10px;padding:16px 28px;background:#e7d5b5;border-top:1px solid #c9ac7f} .sa-ch-left{margin-right:auto} .sa-ch-primary,.sa-ch-secondary,.sa-ch-danger{cursor:pointer;padding:12px 15px;border:1px solid #b08a5a;font:700 10px Arial,sans-serif;letter-spacing:.5px} .sa-ch-primary{background:#123338;color:#f3d7a8;border-color:#123338} .sa-ch-secondary{background:transparent;color:#65492e} .sa-ch-danger{background:transparent;color:#93483c;border-color:#b88378} @media(max-width:650px){#sa-dossier-clean .sa-ch-head{flex-direction:column;align-items:flex-start}#sa-dossier-clean .sa-ch-compact-row{grid-template-columns:1fr 1fr}.sa-ch-formrow{grid-template-columns:1fr}.sa-ch-modalhead,.sa-ch-form,.sa-ch-foot{padding-left:17px;padding-right:17px}} /* CHRONICA VITAE v7 / refined dossier aesthetic */ #sa-dossier-clean .sa-ch-root{position:relative;isolation:isolate;padding:10px 0 36px;--ch-ink:#253f40;--ch-gold:#a7793d;--ch-line:#cfb58b} #sa-dossier-clean .sa-ch-root:before{content:"";position:absolute;z-index:-1;inset:0 0 auto;height:195px;pointer-events:none;background:radial-gradient(ellipse at 83% 0%,rgba(191,144,72,.15),transparent 70%)} #sa-dossier-clean .sa-ch-head{position:relative;align-items:flex-end;padding:24px 22px 27px;border-top:1px solid #c8ab7a;border-bottom:1px solid #b99a68;background:linear-gradient(125deg,rgba(255,249,235,.48),rgba(222,199,160,.13))} #sa-dossier-clean .sa-ch-head:before{content:"\\25C6 ";position:absolute;top:-9px;left:50%;transform:translateX(-50%);color:#a27a41;background:#f3e8d1;padding:0 12px;font-size:13px} #sa-dossier-clean .sa-ch-kicker{font-size:10px;letter-spacing:2.6px;color:#9a753f} #sa-dossier-clean .sa-ch-title{font-size:36px;line-height:1.14;margin:10px 0 9px;color:#253f40;text-shadow:0 1px 0 #fff9e6} #sa-dossier-clean .sa-ch-sub{font-size:14px;color:#8b7051;font-style:italic} #sa-dossier-clean .sa-ch-add{background:linear-gradient(140deg,#1d4142,#102d32);color:#e9cb95;border:1px solid #b18a52;box-shadow:inset 0 0 0 1px #35575a,0 7px 16px #25352d24;letter-spacing:1px;transition:transform .2s,box-shadow .2s} #sa-dossier-clean .sa-ch-add:hover{transform:translateY(-2px);box-shadow:inset 0 0 0 1px #35575a,0 10px 22px #25352d38} #sa-dossier-clean .sa-ch-tools{padding:19px 3px 7px;gap:7px} #sa-dossier-clean .sa-ch-tool{background:linear-gradient(#fff8e9,#ead8b9);border:1px solid #c9ab7d;padding:9px 15px;font:12px Georgia,serif;transition:background .2s,color .2s} #sa-dossier-clean .sa-ch-tool:hover{background:#e3cba4} #sa-dossier-clean .sa-ch-tool.active{background:#19383a;color:#f1d4a0;border-color:#19383a;box-shadow:inset 0 0 0 1px #36585a} #sa-dossier-clean .sa-ch-year{margin:29px 0 20px} #sa-dossier-clean .sa-ch-year-toggle{padding:12px 7px 15px;font-size:31px;border-bottom:1px solid #c7a574;color:#77512f} #sa-dossier-clean .sa-ch-year-toggle small{font-size:11px;letter-spacing:.6px} #sa-dossier-clean .sa-ch-year-arrow{font:normal 20px Georgia,serif;color:#a5783c} #sa-dossier-clean .sa-ch-track{padding:20px 0 10px 44px} #sa-dossier-clean .sa-ch-track:before{left:15px;width:2px;background:linear-gradient(#b88a4e,#ddc7a2,#9f7743);box-shadow:0 0 0 3px #e6d6b744} #sa-dossier-clean .sa-ch-dot{left:-35px;top:38px;width:15px;height:15px;border:3px solid #a97b3d;background:#f5e5c8;box-shadow:0 0 0 4px #e6cc9d,0 1px 5px #4c321c30} #sa-dossier-clean .sa-ch-card{position:relative;overflow:hidden;padding:29px 31px 25px;background:linear-gradient(112deg,rgba(255,250,239,.94),rgba(241,222,188,.92));border:1px solid #c7a473;box-shadow:inset 0 0 0 4px #fff7e65e,0 8px 22px #4c321b1b} #sa-dossier-clean .sa-ch-card:before{content:"";position:absolute;inset:5px;pointer-events:none;border:1px solid #c7a87955} #sa-dossier-clean .sa-ch-card:after{content:"\\2726 ";position:absolute;right:18px;bottom:9px;color:#b38b533e;font-size:33px;pointer-events:none} #sa-dossier-clean .sa-ch-card:hover{transform:translateY(-3px);box-shadow:inset 0 0 0 4px #fff7e65e,0 15px 28px #4c321b30} #sa-dossier-clean .sa-ch-date{font-size:10px;letter-spacing:1.8px;color:#9c7744} #sa-dossier-clean .sa-ch-status{font:11px Georgia,serif;padding:6px 11px;border:1px solid #b9a07c;background:#f7edd8;color:#69563e} #sa-dossier-clean .sa-ch-status-active{border-color:#75978b;background:#e6efe3;color:#2d6252} #sa-dossier-clean .sa-ch-card-title{font-size:27px;line-height:1.23;margin:20px 0 13px;color:#293f3e} #sa-dossier-clean .sa-ch-desc{font-size:15px;line-height:1.8;color:#5c4a37} #sa-dossier-clean .sa-ch-people{font-size:12px;color:#826644;margin-top:12px} #sa-dossier-clean .sa-ch-bottom{margin-top:19px;padding-top:14px;border-top:1px solid #c9b38d7d;gap:23px} #sa-dossier-clean .sa-ch-jump,#sa-dossier-clean .sa-ch-edit{font-size:13px;color:#77532d;position:relative;z-index:1} #sa-dossier-clean .sa-ch-jump:after{content:" \\2197 ";font-size:14px} #sa-dossier-clean .sa-ch-compact-row{padding:18px 13px;background:#fff6e542;border-bottom:1px solid #d2b68a} .sa-ch-close{font-size:12px;font-family:Georgia,serif;width:auto;min-width:66px;padding:0 8px} @media(max-width:650px){#sa-dossier-clean .sa-ch-head{padding:20px 14px}#sa-dossier-clean .sa-ch-title{font-size:29px}#sa-dossier-clean .sa-ch-card{padding:23px 17px}#sa-dossier-clean .sa-ch-card-title{font-size:23px}#sa-dossier-clean .sa-ch-track{padding-left:33px}#sa-dossier-clean .sa-ch-dot{left:-28px}} @media(prefers-reduced-motion:no-preference){#sa-dossier-clean .sa-ch-item{animation:saChEnter .45s both}@keyframes saChEnter{from{opacity:.25;transform:translateY(12px)}to{opacity:1;transform:none}}} `;document.head.append(s) } function install(){ var root=document.getElementById('sa-dossier-clean'),panel=root&&root.querySelector('.panel[data-p="chr"],.panel[data-p="log"],.panel[data-p="chronicle"]');if(!panel)return; var found=panel.querySelector('p.sa40-edit')||panel.querySelector('p.sa41-section-text')||panel.querySelector('p.sa-section-text')||panel.querySelector('p'); if(!found){var candidates=panel.querySelectorAll('div,p,span');for(var i=0;i