Änderungen von Dokument Prepare

Zuletzt geändert von Veronika Kocher am Freitag, 18 Sep. 2026 16:47

Von Version 1.4
bearbeitet von Veronika Kocher
am Mittwoch, 02 Sep. 2026 9:43
Änderungskommentar: Es gibt keinen Kommentar für diese Version
Auf Version 1.8
bearbeitet von Veronika Kocher
am Donnerstag, 03 Sep. 2026 10:09
Änderungskommentar: Es gibt keinen Kommentar für diese Version

Zusammenfassung

Details

Seiteneigenschaften
Inhalt
... ... @@ -473,9 +473,9 @@
473 473   <div style="padding:15px 16px;background:#fcfbf8;border:1px solid #e3ded6;border-top:3px solid #38b76a;border-radius:9px;"><strong style="color:#3f6b4b;">Checklisten &amp; Vorlagen</strong><br><span data-arsn-coming-soon="true" style="display:inline-block;margin:6px 0 8px 0;padding:4px 9px;border-radius:14px;background:#fff4ee;border:1px solid #efd9cc;color:#8a4d36;font-size:11px;font-weight:700;letter-spacing:.065em;line-height:1.2;">IN VORBEREITUNG</span><div style="margin-top:5px;color:#625d56;">Wiederverwendbare Hilfsmittel zum Planen, Dokumentieren und Überprüfen deiner Projektstruktur.</div></div>
474 474   </div>
475 475  
476 - <aside style="margin:0 0 14px 0;padding:16px 18px;border:1px solid #c7e5ed;border-left:5px solid #21b6d7;background:#e5f5f9;border-radius:8px;">
477 - <strong style="color:#2d5661;">Brauchst du Unterstützung?</strong>
478 - <div style="margin-top:5px;color:#365e68;line-height:1.5;">Nicht sicher, welche Anforderungen, Services oder nächsten Schritte für dein Projekt gelten? Wende dich für projektspezifische Unterstützung an Support Kunst und Forschung.</div>
476 + <aside style="margin:0 0 14px 0;padding:16px 18px;border:1px solid #c7e5ed;border-left:5px solid #21b6d7;background:#e5f5f9;border-radius:8px;"><!-- ARSN_PHASE_ROUTING_V1 -->
477 + <strong style="color:#2d5661;">Brauchst du Hilfe beim richtigen Weg?</strong>
478 + <div style="margin-top:5px;color:#365e68;line-height:1.5;"><strong>Starte bei Support Kunst und Forschung</strong> für Projektentwicklung, Förderung, Anträge und die Koordination geförderter Kunst-/Forschungsprojekte. Für Rechte, Daten, IT, Finanzen, Personal, Räume oder andere Fachfragen folge der auf der Themenseite genannten zuständigen Service-Stelle.</div>
479 479   </aside>
480 480  
481 481   <div class="arsn-tip"><strong>Tipp · Eine hilfreiche Faustregel:</strong> Plane früh, dokumentiere Entscheidungen und überprüfe sie, wenn sich das Projekt verändert. Eine einfache Projektstruktur, die tatsächlich genutzt wird, ist meist wirksamer als ein komplexer Plan, der nie aktualisiert wird.</div>
... ... @@ -482,3 +482,1121 @@
482 482  
483 483  </div>
484 484  {{/html}}
485 +
486 +\n\n
487 +\n\n{{html clean="false"}}
488 +<!-- SN_HORIZONTAL_BOX_HARMONIZER_START -->
489 +
490 +<style data-sn-horizontal-box-harmonizer="7">
491 +/* ---------- Typography: never justify headings ---------- */
492 +#xwikicontent h1,
493 +#xwikicontent h2,
494 +#xwikicontent h3,
495 +#xwikicontent h4,
496 +#xwikicontent h5,
497 +#xwikicontent h6,
498 +#xwikicontent .box-title,
499 +#xwikicontent [role="heading"],
500 +#xwikicontent h1 a,
501 +#xwikicontent h2 a,
502 +#xwikicontent h3 a,
503 +#xwikicontent h4 a,
504 +#xwikicontent h5 a,
505 +#xwikicontent h6 a,
506 +#xwikicontent .box-title a,
507 +#xwikicontent [role="heading"] a{
508 + text-align:left!important;
509 + text-justify:auto!important;
510 + word-spacing:normal!important;
511 +}
512 +
513 +/* ---------- Native XWiki semantic callouts ---------- */
514 +#xwikicontent .box.infomessage,
515 +#xwikicontent .infomessage,
516 +#xwikicontent .box.warningmessage,
517 +#xwikicontent .warningmessage,
518 +#xwikicontent .box.successmessage,
519 +#xwikicontent .successmessage,
520 +#xwikicontent .box.errormessage,
521 +#xwikicontent .errormessage,
522 +#xwikicontent [data-sn-callout-harmonized="1"]{
523 + box-sizing:border-box!important;
524 + border-radius:8px!important;
525 + border-top:1px solid rgba(0,0,0,.08)!important;
526 + border-right:1px solid rgba(0,0,0,.08)!important;
527 + border-bottom:1px solid rgba(0,0,0,.08)!important;
528 + border-left:4px solid var(--sn-callout-accent,#21b6d7)!important;
529 + padding:14px 16px!important;
530 + text-align:left!important;
531 + text-justify:auto!important;
532 + word-spacing:normal!important;
533 + box-shadow:none!important;
534 +}
535 +
536 +#xwikicontent .box.infomessage,
537 +#xwikicontent .infomessage{
538 + --sn-callout-accent:#21b6d7;
539 + background:#eaf7fb!important;
540 +}
541 +
542 +#xwikicontent .box.warningmessage,
543 +#xwikicontent .warningmessage{
544 + --sn-callout-accent:#f0aa00;
545 + background:#fff8e7!important;
546 +}
547 +
548 +#xwikicontent .box.successmessage,
549 +#xwikicontent .successmessage{
550 + --sn-callout-accent:#38b76a;
551 + background:#edf9f1!important;
552 +}
553 +
554 +#xwikicontent .box.errormessage,
555 +#xwikicontent .errormessage{
556 + --sn-callout-accent:#e94b13;
557 + background:#fff1ec!important;
558 +}
559 +
560 +#xwikicontent [data-sn-callout-harmonized="1"] > :first-child,
561 +#xwikicontent .infomessage > :first-child,
562 +#xwikicontent .warningmessage > :first-child,
563 +#xwikicontent .successmessage > :first-child,
564 +#xwikicontent .errormessage > :first-child{
565 + margin-top:0!important;
566 +}
567 +
568 +#xwikicontent [data-sn-callout-harmonized="1"] > :last-child,
569 +#xwikicontent .infomessage > :last-child,
570 +#xwikicontent .warningmessage > :last-child,
571 +#xwikicontent .successmessage > :last-child,
572 +#xwikicontent .errormessage > :last-child{
573 + margin-bottom:0!important;
574 +}
575 +
576 +#xwikicontent [data-sn-equal-height-managed],
577 +#xwikicontent [data-sn-first-section-aligned],
578 +#xwikicontent [data-sn-first-content-aligned]{
579 + box-sizing:border-box;
580 +}
581 +</style>
582 +
583 +<script data-sn-horizontal-box-harmonizer="7">
584 +(function(){
585 + "use strict";
586 +
587 + var MOBILE_MAX=767;
588 + var ROW_TOLERANCE=6;
589 + var MIN_W=150;
590 + var MIN_H=36;
591 + var MAX_PARENT_CHILDREN=18;
592 + var SEARCH_DEPTH=5;
593 + var RESIZE_DEBOUNCE=220;
594 + var MIN_WIDTH_CHANGE=2;
595 +
596 + var root=
597 + document.getElementById("xwikicontent")||
598 + document.querySelector(".xwiki-rendering-content")||
599 + document.querySelector("main")||
600 + document.body;
601 +
602 + if(!root)return;
603 +
604 + var heightManaged=new Set();
605 + var sectionManaged=new Set();
606 + var contentManaged=new Set();
607 +
608 + var originalMinHeight=new WeakMap();
609 + var originalMarginTop=new WeakMap();
610 +
611 + var resizeTimer=0;
612 + var lastWidth=-1;
613 + var hasApplied=false;
614 + var applying=false;
615 +
616 + function num(v){
617 + var n=parseFloat(v);
618 + return Number.isFinite(n)?n:0;
619 + }
620 +
621 + function visible(el,minW,minH){
622 + if(!el||el.nodeType!==1)return false;
623 +
624 + var s=getComputedStyle(el);
625 +
626 + if(
627 + s.display==="none"||
628 + s.visibility==="hidden"||
629 + Number(s.opacity)===0
630 + ){
631 + return false;
632 + }
633 +
634 + var r=el.getBoundingClientRect();
635 +
636 + return (
637 + r.width>=(minW||1)&&
638 + r.height>=(minH||1)
639 + );
640 + }
641 +
642 + function normalizeText(text){
643 + return String(text||"")
644 + .replace(/\s+/g," ")
645 + .trim()
646 + .toUpperCase();
647 + }
648 +
649 + function excluded(el){
650 + return (
651 + !el.matches||
652 + el.matches(
653 + "button,input,select,textarea,option,label,img,svg,canvas,table,thead,tbody,tfoot,tr,td,th,summary,script,style,noscript,template,.btn,.chip,[role=button]"
654 + )
655 + );
656 + }
657 +
658 + /* ---------- Custom coloured callouts ---------- */
659 +
660 + function nativeCallout(el){
661 + var c=
662 + typeof el.className==="string"
663 + ? el.className.toLowerCase()
664 + : "";
665 +
666 + return (
667 + /(^|\s)(infomessage|warningmessage|successmessage|errormessage)(\s|$)/.test(c)
668 + );
669 + }
670 +
671 + function customCallout(el){
672 + if(!visible(el,220,42)||excluded(el))return false;
673 +
674 + var r=el.getBoundingClientRect();
675 +
676 + if(r.height>520)return false;
677 +
678 + var s=getComputedStyle(el);
679 +
680 + var bg=
681 + s.backgroundColor&&
682 + s.backgroundColor!=="rgba(0, 0, 0, 0)"&&
683 + s.backgroundColor!=="transparent"&&
684 + s.backgroundColor!=="rgb(255, 255, 255)";
685 +
686 + var left=
687 + num(s.borderLeftWidth);
688 +
689 + return (
690 + bg&&
691 + left>=2
692 + );
693 + }
694 +
695 + function harmoniseCustomCallouts(){
696 + Array.from(
697 + root.querySelectorAll(
698 + "div,aside,section"
699 + )
700 + ).forEach(function(el){
701 + if(nativeCallout(el))return;
702 + if(!customCallout(el))return;
703 +
704 + var s=getComputedStyle(el);
705 +
706 + el.setAttribute(
707 + "data-sn-callout-harmonized",
708 + "1"
709 + );
710 +
711 + if(
712 + s.borderLeftColor
713 + ){
714 + el.style.setProperty(
715 + "--sn-callout-accent",
716 + s.borderLeftColor
717 + );
718 + }
719 + });
720 + }
721 +
722 + /* ---------- Restore only values V7 itself changed ---------- */
723 +
724 + function saveOriginal(el,map,property){
725 + if(map.has(el))return;
726 +
727 + map.set(el,{
728 + value:
729 + el.style.getPropertyValue(
730 + property
731 + ),
732 + priority:
733 + el.style.getPropertyPriority(
734 + property
735 + )
736 + });
737 + }
738 +
739 + function restoreOriginal(el,map,property){
740 + var original=map.get(el);
741 +
742 + if(original&&original.value){
743 + el.style.setProperty(
744 + property,
745 + original.value,
746 + original.priority||""
747 + );
748 + }else{
749 + el.style.removeProperty(
750 + property
751 + );
752 + }
753 + }
754 +
755 + function resetRuntime(){
756 + heightManaged.forEach(function(el){
757 + restoreOriginal(
758 + el,
759 + originalMinHeight,
760 + "min-height"
761 + );
762 +
763 + el.removeAttribute(
764 + "data-sn-equal-height-managed"
765 + );
766 + });
767 +
768 + sectionManaged.forEach(function(el){
769 + restoreOriginal(
770 + el,
771 + originalMarginTop,
772 + "margin-top"
773 + );
774 +
775 + el.removeAttribute(
776 + "data-sn-first-section-aligned"
777 + );
778 + });
779 +
780 + contentManaged.forEach(function(el){
781 + restoreOriginal(
782 + el,
783 + originalMarginTop,
784 + "margin-top"
785 + );
786 +
787 + el.removeAttribute(
788 + "data-sn-first-content-aligned"
789 + );
790 + });
791 +
792 + heightManaged.clear();
793 + sectionManaged.clear();
794 + contentManaged.clear();
795 + }
796 +
797 + /* ---------- Card detection ---------- */
798 +
799 + function namedLikeBox(el){
800 + var c=
801 + typeof el.className==="string"
802 + ? el.className
803 + : "";
804 +
805 + return /(^|[\s_-])(box|card|tile|panel|role|check|service|source|call|area|detail|resource|topic|warn|info)([\s_-]|$)/i.test(c);
806 + }
807 +
808 + function boxLike(el){
809 + if(
810 + !visible(el,MIN_W,MIN_H)||
811 + excluded(el)
812 + ){
813 + return false;
814 + }
815 +
816 + var s=getComputedStyle(el);
817 + var r=el.getBoundingClientRect();
818 +
819 + var border=
820 + num(s.borderTopWidth)+
821 + num(s.borderRightWidth)+
822 + num(s.borderBottomWidth)+
823 + num(s.borderLeftWidth);
824 +
825 + var radius=Math.max(
826 + num(s.borderTopLeftRadius),
827 + num(s.borderTopRightRadius),
828 + num(s.borderBottomLeftRadius),
829 + num(s.borderBottomRightRadius)
830 + );
831 +
832 + var bg=
833 + s.backgroundColor&&
834 + s.backgroundColor!=="rgba(0, 0, 0, 0)"&&
835 + s.backgroundColor!=="transparent";
836 +
837 + var shadow=
838 + s.boxShadow&&
839 + s.boxShadow!=="none";
840 +
841 + return (
842 + namedLikeBox(el)||
843 + border>=1||
844 + (bg&&radius>=3)||
845 + (shadow&&r.width>=180)
846 + );
847 + }
848 +
849 + function pickTarget(child){
850 + if(!visible(child,MIN_W,MIN_H))return null;
851 +
852 + if(boxLike(child))return child;
853 +
854 + var cr=child.getBoundingClientRect();
855 + var q=[];
856 +
857 + Array.from(child.children||[]).forEach(function(el){
858 + q.push({el:el,depth:1});
859 + });
860 +
861 + var best=null;
862 + var bestScore=-Infinity;
863 +
864 + while(q.length){
865 + var item=q.shift();
866 + var el=item.el;
867 +
868 + if(!visible(el,MIN_W,MIN_H))continue;
869 +
870 + var r=el.getBoundingClientRect();
871 +
872 + if(
873 + r.width>=cr.width*.68&&
874 + boxLike(el)
875 + ){
876 + var widthFit=
877 + 1-Math.min(
878 + 1,
879 + Math.abs(cr.width-r.width)/
880 + Math.max(1,cr.width)
881 + );
882 +
883 + var topFit=
884 + 1-Math.min(
885 + 1,
886 + Math.abs(cr.top-r.top)/100
887 + );
888 +
889 + var score=
890 + widthFit*6+
891 + topFit*3+
892 + Math.min(r.height,900)/450+
893 + Math.min(r.width*r.height,900000)/900000;
894 +
895 + if(score>bestScore){
896 + best=el;
897 + bestScore=score;
898 + }
899 + }
900 +
901 + if(item.depth<SEARCH_DEPTH){
902 + Array.from(el.children||[]).forEach(function(next){
903 + q.push({
904 + el:next,
905 + depth:item.depth+1
906 + });
907 + });
908 + }
909 + }
910 +
911 + return best;
912 + }
913 +
914 + function groupRows(entries){
915 + var groups=[];
916 +
917 + entries
918 + .slice()
919 + .sort(function(a,b){
920 + return (
921 + a.rect.top-b.rect.top||
922 + a.rect.left-b.rect.left
923 + );
924 + })
925 + .forEach(function(entry){
926 + var group=null;
927 +
928 + for(var i=0;i<groups.length;i++){
929 + if(
930 + Math.abs(
931 + groups[i].top-
932 + entry.rect.top
933 + )<=ROW_TOLERANCE
934 + ){
935 + group=groups[i];
936 + break;
937 + }
938 + }
939 +
940 + if(!group){
941 + group={
942 + top:entry.rect.top,
943 + entries:[]
944 + };
945 + groups.push(group);
946 + }
947 +
948 + group.entries.push(entry);
949 + });
950 +
951 + return groups;
952 + }
953 +
954 + function validRow(group){
955 + if(group.entries.length<2)return false;
956 +
957 + var lefts=
958 + group.entries
959 + .map(function(e){return e.rect.left;})
960 + .sort(function(a,b){return a-b;});
961 +
962 + if(
963 + lefts[lefts.length-1]-
964 + lefts[0]<
965 + 80
966 + ){
967 + return false;
968 + }
969 +
970 + var widths=
971 + group.entries
972 + .map(function(e){return e.rect.width;})
973 + .filter(function(w){return w>0;});
974 +
975 + if(widths.length<2)return false;
976 +
977 + var minW=
978 + Math.min.apply(Math,widths);
979 +
980 + var maxW=
981 + Math.max.apply(Math,widths);
982 +
983 + return (
984 + maxW/
985 + Math.max(1,minW)<=
986 + 1.9
987 + );
988 + }
989 +
990 + /* ---------- Known ARSN first section bars ---------- */
991 +
992 + function knownBar(el){
993 + var text=
994 + normalizeText(
995 + el.textContent
996 + );
997 +
998 + return (
999 + text==="HIER STARTEN"||
1000 + text==="ORGANISIEREN & DOKUMENTIEREN"||
1001 + text==="ENTSCHEIDEN"||
1002 + text==="START HERE"||
1003 + text==="GET STARTED"||
1004 + text==="ORGANISE & DOCUMENT"||
1005 + text==="ORGANIZE & DOCUMENT"||
1006 + text==="DECIDE"
1007 + );
1008 + }
1009 +
1010 + function findKnownBar(card){
1011 + var cardRect=
1012 + card.getBoundingClientRect();
1013 +
1014 + var rows=
1015 + Array.from(
1016 + card.querySelectorAll(
1017 + "div,p,span,strong,h3,h4,h5,h6"
1018 + )
1019 + )
1020 + .filter(function(el){
1021 + if(!visible(el,20,6))return false;
1022 + if(!knownBar(el))return false;
1023 +
1024 + var r=el.getBoundingClientRect();
1025 +
1026 + var rel=
1027 + r.top-
1028 + cardRect.top;
1029 +
1030 + return (
1031 + rel>=35&&
1032 + rel<=
1033 + cardRect.height*.75
1034 + );
1035 + })
1036 + .sort(function(a,b){
1037 + return (
1038 + a.getBoundingClientRect().top-
1039 + b.getBoundingClientRect().top
1040 + );
1041 + });
1042 +
1043 + return rows[0]||null;
1044 + }
1045 +
1046 + function alignKnownBars(cards){
1047 + var rows=
1048 + cards.map(function(card){
1049 + var bar=
1050 + findKnownBar(card);
1051 +
1052 + if(!bar)return null;
1053 +
1054 + var cr=
1055 + card.getBoundingClientRect();
1056 +
1057 + var br=
1058 + bar.getBoundingClientRect();
1059 +
1060 + return {
1061 + bar:bar,
1062 + relativeTop:
1063 + br.top-
1064 + cr.top
1065 + };
1066 + });
1067 +
1068 + if(
1069 + rows.some(function(row){
1070 + return !row;
1071 + })
1072 + ){
1073 + return false;
1074 + }
1075 +
1076 + var target=
1077 + Math.max.apply(
1078 + Math,
1079 + rows.map(function(row){
1080 + return row.relativeTop;
1081 + })
1082 + );
1083 +
1084 + rows.forEach(function(row){
1085 + var delta=
1086 + target-
1087 + row.relativeTop;
1088 +
1089 + if(delta<=1)return;
1090 +
1091 + saveOriginal(
1092 + row.bar,
1093 + originalMarginTop,
1094 + "margin-top"
1095 + );
1096 +
1097 + var current=
1098 + num(
1099 + getComputedStyle(
1100 + row.bar
1101 + ).marginTop
1102 + );
1103 +
1104 + row.bar.style.setProperty(
1105 + "margin-top",
1106 + (
1107 + current+
1108 + delta
1109 + )+"px"
1110 + );
1111 +
1112 + row.bar.setAttribute(
1113 + "data-sn-first-section-aligned",
1114 + "7"
1115 + );
1116 +
1117 + sectionManaged.add(
1118 + row.bar
1119 + );
1120 + });
1121 +
1122 + return true;
1123 + }
1124 +
1125 + /* ---------- Generic first content after heading ---------- */
1126 +
1127 + function heading(card){
1128 + var cr=
1129 + card.getBoundingClientRect();
1130 +
1131 + var rows=
1132 + Array.from(
1133 + card.querySelectorAll(
1134 + "h1,h2,h3,h4,h5,h6,.box-title,[role=heading]"
1135 + )
1136 + )
1137 + .filter(function(el){
1138 + if(!visible(el,20,8))return false;
1139 +
1140 + var r=el.getBoundingClientRect();
1141 +
1142 + var rel=
1143 + r.top-
1144 + cr.top;
1145 +
1146 + return (
1147 + rel>=0&&
1148 + rel<=
1149 + Math.min(
1150 + 160,
1151 + cr.height*.45
1152 + )
1153 + );
1154 + })
1155 + .sort(function(a,b){
1156 + return (
1157 + a.getBoundingClientRect().top-
1158 + b.getBoundingClientRect().top
1159 + );
1160 + });
1161 +
1162 + return rows[0]||null;
1163 + }
1164 +
1165 + function firstContent(card,h){
1166 + if(!h)return null;
1167 +
1168 + var cr=
1169 + card.getBoundingClientRect();
1170 +
1171 + var hr=
1172 + h.getBoundingClientRect();
1173 +
1174 + var rows=
1175 + Array.from(
1176 + card.querySelectorAll(
1177 + "p,div,ul,ol,dl,blockquote"
1178 + )
1179 + )
1180 + .filter(function(el){
1181 + if(
1182 + el===h||
1183 + h.contains(el)||
1184 + el.contains(h)
1185 + ){
1186 + return false;
1187 + }
1188 +
1189 + if(!visible(el,30,8))return false;
1190 +
1191 + var text=
1192 + String(el.textContent||"")
1193 + .replace(/\s+/g," ")
1194 + .trim();
1195 +
1196 + if(text.length<3)return false;
1197 +
1198 + var r=el.getBoundingClientRect();
1199 +
1200 + if(
1201 + r.top<
1202 + hr.bottom-1
1203 + ){
1204 + return false;
1205 + }
1206 +
1207 + if(
1208 + r.top-cr.top>
1209 + Math.min(
1210 + 280,
1211 + cr.height*.65
1212 + )
1213 + ){
1214 + return false;
1215 + }
1216 +
1217 + if(
1218 + r.height>
1219 + cr.height*.58
1220 + ){
1221 + return false;
1222 + }
1223 +
1224 + return true;
1225 + })
1226 + .sort(function(a,b){
1227 + var ar=
1228 + a.getBoundingClientRect();
1229 +
1230 + var br=
1231 + b.getBoundingClientRect();
1232 +
1233 + return (
1234 + ar.top-br.top||
1235 + ar.height-br.height
1236 + );
1237 + });
1238 +
1239 + return rows[0]||null;
1240 + }
1241 +
1242 + function alignGeneric(cards){
1243 + var rows=
1244 + cards.map(function(card){
1245 + var h=
1246 + heading(card);
1247 +
1248 + var c=
1249 + firstContent(
1250 + card,
1251 + h
1252 + );
1253 +
1254 + if(!h||!c)return null;
1255 +
1256 + var cr=
1257 + card.getBoundingClientRect();
1258 +
1259 + var rr=
1260 + c.getBoundingClientRect();
1261 +
1262 + return {
1263 + content:c,
1264 + relativeTop:
1265 + rr.top-cr.top
1266 + };
1267 + });
1268 +
1269 + if(
1270 + rows.some(function(row){
1271 + return !row;
1272 + })
1273 + ){
1274 + return false;
1275 + }
1276 +
1277 + var target=
1278 + Math.max.apply(
1279 + Math,
1280 + rows.map(function(row){
1281 + return row.relativeTop;
1282 + })
1283 + );
1284 +
1285 + rows.forEach(function(row){
1286 + var delta=
1287 + target-
1288 + row.relativeTop;
1289 +
1290 + if(delta<=1)return;
1291 +
1292 + saveOriginal(
1293 + row.content,
1294 + originalMarginTop,
1295 + "margin-top"
1296 + );
1297 +
1298 + var current=
1299 + num(
1300 + getComputedStyle(
1301 + row.content
1302 + ).marginTop
1303 + );
1304 +
1305 + row.content.style.setProperty(
1306 + "margin-top",
1307 + (
1308 + current+
1309 + delta
1310 + )+"px"
1311 + );
1312 +
1313 + row.content.setAttribute(
1314 + "data-sn-first-content-aligned",
1315 + "7"
1316 + );
1317 +
1318 + contentManaged.add(
1319 + row.content
1320 + );
1321 + });
1322 +
1323 + return true;
1324 + }
1325 +
1326 + function applyRow(group){
1327 + if(!validRow(group))return false;
1328 +
1329 + var cards=[];
1330 + var seen=new Set();
1331 +
1332 + group.entries.forEach(function(entry){
1333 + if(!seen.has(entry.target)){
1334 + seen.add(entry.target);
1335 + cards.push(entry.target);
1336 + }
1337 + });
1338 +
1339 + if(cards.length<2)return false;
1340 +
1341 + if(
1342 + !alignKnownBars(cards)
1343 + ){
1344 + alignGeneric(cards);
1345 + }
1346 +
1347 + var maxHeight=0;
1348 +
1349 + cards.forEach(function(card){
1350 + maxHeight=
1351 + Math.max(
1352 + maxHeight,
1353 + card.getBoundingClientRect().height
1354 + );
1355 + });
1356 +
1357 + maxHeight=
1358 + Math.ceil(
1359 + maxHeight
1360 + );
1361 +
1362 + if(maxHeight<MIN_H)return false;
1363 +
1364 + cards.forEach(function(card){
1365 + saveOriginal(
1366 + card,
1367 + originalMinHeight,
1368 + "min-height"
1369 + );
1370 +
1371 + card.style.setProperty(
1372 + "min-height",
1373 + maxHeight+"px"
1374 + );
1375 +
1376 + card.setAttribute(
1377 + "data-sn-equal-height-managed",
1378 + "7"
1379 + );
1380 +
1381 + heightManaged.add(card);
1382 + });
1383 +
1384 + return true;
1385 + }
1386 +
1387 + function calculate(force){
1388 + if(applying)return;
1389 +
1390 + var width=
1391 + Math.round(
1392 + window.innerWidth
1393 + );
1394 +
1395 + var meaningful=
1396 + lastWidth<0||
1397 + Math.abs(
1398 + width-
1399 + lastWidth
1400 + )>=
1401 + MIN_WIDTH_CHANGE;
1402 +
1403 + if(
1404 + hasApplied&&
1405 + !force&&
1406 + !meaningful
1407 + ){
1408 + return;
1409 + }
1410 +
1411 + applying=true;
1412 +
1413 + try{
1414 + harmoniseCustomCallouts();
1415 +
1416 + if(width<=MOBILE_MAX){
1417 + if(hasApplied){
1418 + resetRuntime();
1419 + }
1420 +
1421 + hasApplied=false;
1422 + lastWidth=width;
1423 + return;
1424 + }
1425 +
1426 + if(hasApplied){
1427 + resetRuntime();
1428 + }
1429 +
1430 + var parents=
1431 + Array.from(
1432 + root.querySelectorAll("*")
1433 + )
1434 + .filter(function(parent){
1435 + return (
1436 + visible(
1437 + parent,
1438 + MIN_W,
1439 + MIN_H
1440 + )&&
1441 + parent.children&&
1442 + parent.children.length>=2&&
1443 + parent.children.length<=
1444 + MAX_PARENT_CHILDREN
1445 + );
1446 + });
1447 +
1448 + var touched=
1449 + new Set();
1450 +
1451 + parents.forEach(function(parent){
1452 + var entries=[];
1453 +
1454 + Array.from(
1455 + parent.children
1456 + ).forEach(function(child){
1457 + if(
1458 + !visible(
1459 + child,
1460 + MIN_W,
1461 + MIN_H
1462 + )
1463 + ){
1464 + return;
1465 + }
1466 +
1467 + var target=
1468 + pickTarget(child);
1469 +
1470 + if(!target)return;
1471 +
1472 + entries.push({
1473 + target:target,
1474 + rect:
1475 + target.getBoundingClientRect()
1476 + });
1477 + });
1478 +
1479 + groupRows(
1480 + entries
1481 + ).forEach(function(group){
1482 + if(!validRow(group))return;
1483 +
1484 + var targets=
1485 + group.entries.map(function(entry){
1486 + return entry.target;
1487 + });
1488 +
1489 + if(
1490 + !targets.some(function(el){
1491 + return !touched.has(el);
1492 + })
1493 + ){
1494 + return;
1495 + }
1496 +
1497 + if(applyRow(group)){
1498 + targets.forEach(function(el){
1499 + touched.add(el);
1500 + });
1501 + }
1502 + });
1503 + });
1504 +
1505 + lastWidth=width;
1506 + hasApplied=true;
1507 + }finally{
1508 + applying=false;
1509 + }
1510 + }
1511 +
1512 + function resize(){
1513 + if(resizeTimer){
1514 + clearTimeout(
1515 + resizeTimer
1516 + );
1517 + }
1518 +
1519 + resizeTimer=
1520 + setTimeout(
1521 + function(){
1522 + resizeTimer=0;
1523 + calculate(false);
1524 + },
1525 + RESIZE_DEBOUNCE
1526 + );
1527 + }
1528 +
1529 + function waitImages(){
1530 + var images=
1531 + Array.from(
1532 + root.querySelectorAll("img")
1533 + );
1534 +
1535 + return Promise.all(
1536 + images.map(function(img){
1537 + if(img.complete){
1538 + return Promise.resolve();
1539 + }
1540 +
1541 + return new Promise(function(resolve){
1542 + var done=function(){
1543 + resolve();
1544 + };
1545 +
1546 + img.addEventListener(
1547 + "load",
1548 + done,
1549 + {once:true}
1550 + );
1551 +
1552 + img.addEventListener(
1553 + "error",
1554 + done,
1555 + {once:true}
1556 + );
1557 + });
1558 + })
1559 + );
1560 + }
1561 +
1562 + async function initial(){
1563 + if(
1564 + document.readyState!==
1565 + "complete"
1566 + ){
1567 + await new Promise(function(resolve){
1568 + addEventListener(
1569 + "load",
1570 + resolve,
1571 + {once:true}
1572 + );
1573 + });
1574 + }
1575 +
1576 + if(
1577 + document.fonts&&
1578 + document.fonts.ready
1579 + ){
1580 + try{
1581 + await document.fonts.ready;
1582 + }catch(error){}
1583 + }
1584 +
1585 + await waitImages();
1586 +
1587 + // Exactly one initial layout calculation.
1588 + calculate(true);
1589 + }
1590 +
1591 + addEventListener(
1592 + "resize",
1593 + resize,
1594 + {passive:true}
1595 + );
1596 +
1597 + initial();
1598 +})();
1599 +</script>
1600 +
1601 +<!-- SN_HORIZONTAL_BOX_HARMONIZER_END -->
1602 +{{/html}}\n