Changes for page Get Started

Last modified by Veronika Kocher on Friday, 04 Sep 2026 15:32

From version 5.1
edited by Veronika Kocher
on Monday, 31 Aug 2026 14:02
Change comment: There is no comment for this version
To version 8.8
edited by Veronika Kocher
on Thursday, 03 Sep 2026 14:15
Change comment: There is no comment for this version

Summary

Details

Page properties
Default language
... ... @@ -1,0 +1,1 @@
1 +en
Content
... ... @@ -434,3 +434,1405 @@
434 434  
435 435  </div>
436 436  {{/html}}
437 +
438 +{{html clean="false"}}
439 +<!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_START -->
440 +
441 +<style data-sn-service-navigator-master="1">
442 +/* =========================================================
443 + MASTER TYPOGRAPHY
444 + ========================================================= */
445 +#xwikicontent h1,
446 +#xwikicontent h2,
447 +#xwikicontent h3,
448 +#xwikicontent h4,
449 +#xwikicontent h5,
450 +#xwikicontent h6,
451 +#xwikicontent .box-title,
452 +#xwikicontent [role="heading"],
453 +#xwikicontent h1 a,
454 +#xwikicontent h2 a,
455 +#xwikicontent h3 a,
456 +#xwikicontent h4 a,
457 +#xwikicontent h5 a,
458 +#xwikicontent h6 a,
459 +#xwikicontent .box-title a,
460 +#xwikicontent [role="heading"] a{
461 + text-align:left!important;
462 + text-justify:auto!important;
463 + word-spacing:normal!important;
464 +}
465 +
466 +/* =========================================================
467 + COMING SOON / IN VORBEREITUNG
468 + ========================================================= */
469 +.sn-coming-soon-badge{
470 + display:inline-block;
471 + vertical-align:middle;
472 + margin-left:10px;
473 + padding:4px 8px;
474 + border-radius:14px;
475 + border:1px solid #efd9cc;
476 + background:#fff4ee;
477 + color:#8a4d36;
478 + font-size:11px;
479 + font-weight:700;
480 + letter-spacing:.055em;
481 + line-height:1.2;
482 + white-space:nowrap;
483 +}
484 +
485 +/* =========================================================
486 + NATIVE / DETAIL CALLOUT GEOMETRY
487 + Preserve existing backgrounds.
488 + ========================================================= */
489 +#xwikicontent .arsn-info,
490 +#xwikicontent .dmp-info,
491 +#xwikicontent .ido-info,
492 +#xwikicontent .pp-info,
493 +#xwikicontent .infomessage{
494 + box-sizing:border-box!important;
495 + border-left:4px solid #21b6d7!important;
496 + border-radius:8px;
497 + text-align:left!important;
498 + word-spacing:normal!important;
499 +}
500 +
501 +#xwikicontent .arsn-warn,
502 +#xwikicontent .dmp-warn,
503 +#xwikicontent .ido-warn,
504 +#xwikicontent .pp-warn,
505 +#xwikicontent .warn,
506 +#xwikicontent .warning,
507 +#xwikicontent .warningmessage,
508 +#xwikicontent .errormessage{
509 + box-sizing:border-box!important;
510 + border-left:4px solid #e94b13!important;
511 + border-radius:8px;
512 + text-align:left!important;
513 + word-spacing:normal!important;
514 +}
515 +
516 +[data-sn-master-equal-height],
517 +[data-sn-master-first-row]{
518 + box-sizing:border-box;
519 +}
520 +
521 +/* =========================================================
522 + FULL-WIDTH THREE-LINE NUMBER / TITLE / SUBTITLE BLOCKS
523 + ========================================================= */
524 +#xwikicontent .arsn-area-label[data-sn-three-line="1"]{
525 + display:grid!important;
526 + grid-template-columns:minmax(0,1fr)!important;
527 + grid-auto-rows:auto!important;
528 + width:100%!important;
529 + max-width:none!important;
530 + box-sizing:border-box!important;
531 + justify-items:start!important;
532 + align-items:start!important;
533 + gap:2px!important;
534 + text-align:left!important;
535 + text-align-last:left!important;
536 + text-justify:auto!important;
537 + word-spacing:normal!important;
538 + white-space:normal!important;
539 +}
540 +#xwikicontent .arsn-area-label[data-sn-three-line="1"] > .arsn-area-number,
541 +#xwikicontent .arsn-area-label[data-sn-three-line="1"] > .sn-area-label-title,
542 +#xwikicontent .arsn-area-label[data-sn-three-line="1"] > .arsn-area-action{
543 + display:block!important;
544 + width:100%!important;
545 + margin:0!important;
546 + text-align:left!important;
547 + text-align-last:left!important;
548 + text-justify:auto!important;
549 + word-spacing:normal!important;
550 + white-space:normal!important;
551 +}
552 +</style>
553 +
554 +<script data-sn-service-navigator-master="1">
555 +(function(){
556 + "use strict";
557 +
558 + var PAGE_KIND="detail";
559 + var PLACEHOLDER=false;
560 + var PLACEHOLDER_LABEL="COMING SOON";
561 +
562 + var MOBILE_MAX=767;
563 + var ROW_TOLERANCE=6;
564 + var RESIZE_DEBOUNCE=220;
565 +
566 + var root=
567 + document.getElementById("xwikicontent")||
568 + document.querySelector(".xwiki-rendering-content")||
569 + document.querySelector("main")||
570 + document.body;
571 +
572 + if(!root)return;
573 +
574 + var managedHeight=new Set();
575 + var managedMargin=new Set();
576 + var originalHeight=new WeakMap();
577 + var originalMargin=new WeakMap();
578 +
579 + var resizeTimer=0;
580 + var running=false;
581 +
582 + var THEMES=[
583 + {
584 + name:"BLUE",
585 + accent:"#21b6d7",
586 + bg:"#eaf7fb",
587 + text:"#315d68",
588 + labels:[
589 + "HIER STARTEN",
590 + "ENTSCHEIDEN",
591 + "ÜBERPRÜFEN & ANPASSEN",
592 + "START HERE",
593 + "DECIDE",
594 + "REVIEW & ADAPT"
595 + ]
596 + },
597 + {
598 + name:"RED",
599 + accent:"#e94b13",
600 + bg:"#fff1ec",
601 + text:"#8a4d36",
602 + labels:[
603 + "PLANEN & ORGANISIEREN",
604 + "ORGANISIEREN & DOKUMENTIEREN",
605 + "PUBLIZIEREN & PRÄSENTIEREN",
606 + "PLAN & ORGANISE",
607 + "PLAN & ORGANIZE",
608 + "ORGANISE & DOCUMENT",
609 + "ORGANIZE & DOCUMENT",
610 + "PUBLISH & PRESENT"
611 + ]
612 + },
613 + {
614 + name:"YELLOW",
615 + accent:"#f0aa00",
616 + bg:"#fff8e7",
617 + text:"#785b17",
618 + labels:[
619 + "SCHÜTZEN & KLÄREN",
620 + "STANDARDISIEREN & IDENTIFIZIEREN",
621 + "ÖFFNEN, NACHNUTZEN & AUFFINDBAR MACHEN",
622 + "PROTECT & CLARIFY",
623 + "STANDARDISE & IDENTIFY",
624 + "STANDARDIZE & IDENTIFY",
625 + "OPEN, REUSE & MAKE FINDABLE"
626 + ]
627 + },
628 + {
629 + name:"GREEN",
630 + accent:"#38b76a",
631 + bg:"#edf9f1",
632 + text:"#3f7451",
633 + labels:[
634 + "INFRASTRUKTUR EINRICHTEN",
635 + "INFRASTRUKTUR & ZUSAMMENARBEIT EINRICHTEN",
636 + "SPEICHERN & ZUGRIFF STEUERN",
637 + "REPOSITORIUM, ERHALTEN & ÜBERGEBEN",
638 + "SET UP INFRASTRUCTURE",
639 + "SET UP INFRASTRUCTURE & COLLABORATION",
640 + "STORE & CONTROL ACCESS",
641 + "REPOSITORY, PRESERVE & HAND OVER"
642 + ]
643 + }
644 + ];
645 +
646 + function num(value){
647 + var n=parseFloat(value);
648 + return Number.isFinite(n)?n:0;
649 + }
650 +
651 + function norm(value){
652 + return String(value||"")
653 + .replace(/\s+/g," ")
654 + .trim()
655 + .toUpperCase();
656 + }
657 +
658 + function visible(el){
659 + if(!el||el.nodeType!==1)return false;
660 +
661 + var style=getComputedStyle(el);
662 + var rect=el.getBoundingClientRect();
663 +
664 + return (
665 + style.display!=="none"&&
666 + style.visibility!=="hidden"&&
667 + rect.width>20&&
668 + rect.height>4
669 + );
670 + }
671 +
672 + function saveStyle(el,map,property){
673 + if(map.has(el))return;
674 +
675 + map.set(el,{
676 + value:el.style.getPropertyValue(property),
677 + priority:el.style.getPropertyPriority(property)
678 + });
679 + }
680 +
681 + function restoreStyle(el,map,property){
682 + var original=map.get(el);
683 +
684 + if(original&&original.value){
685 + el.style.setProperty(
686 + property,
687 + original.value,
688 + original.priority||""
689 + );
690 + }else{
691 + el.style.removeProperty(property);
692 + }
693 + }
694 +
695 + function resetRuntime(){
696 + managedHeight.forEach(function(el){
697 + restoreStyle(
698 + el,
699 + originalHeight,
700 + "min-height"
701 + );
702 + el.removeAttribute(
703 + "data-sn-master-equal-height"
704 + );
705 + });
706 +
707 + managedMargin.forEach(function(el){
708 + restoreStyle(
709 + el,
710 + originalMargin,
711 + "margin-top"
712 + );
713 + el.removeAttribute(
714 + "data-sn-master-first-row"
715 + );
716 + });
717 +
718 + managedHeight.clear();
719 + managedMargin.clear();
720 + }
721 +
722 + function themeFor(text){
723 + var value=norm(text);
724 +
725 + for(var i=0;i<THEMES.length;i++){
726 + for(var j=0;j<THEMES[i].labels.length;j++){
727 + var label=THEMES[i].labels[j];
728 +
729 + if(
730 + value===label||
731 + value.indexOf(label+" ")===0||
732 + value.indexOf(label+" -")===0||
733 + value.indexOf(label+" ·")===0
734 + ){
735 + return THEMES[i];
736 + }
737 + }
738 + }
739 +
740 + return null;
741 + }
742 +
743 + /* =======================================================
744 + BORDERLESS FILLED RED/ORANGE CTA BUTTONS
745 + ======================================================= */
746 +
747 + function colourDistance(a,b){
748 + return Math.sqrt(
749 + Math.pow(a[0]-b[0],2)+
750 + Math.pow(a[1]-b[1],2)+
751 + Math.pow(a[2]-b[2],2)
752 + );
753 + }
754 +
755 + function makeFilledRedOrangeCTAsBorderless(){
756 + var RED_ORANGE=[233,75,19];
757 +
758 + Array.from(
759 + root.querySelectorAll(
760 + 'a,button,[role="button"],input[type="submit"],input[type="button"]'
761 + )
762 + ).forEach(function(el){
763 + if(!visible(el))return;
764 +
765 + var style=getComputedStyle(el);
766 + var rgb=parseRGB(style.backgroundColor);
767 +
768 + if(!rgb)return;
769 +
770 + if(
771 + colourDistance(
772 + rgb,
773 + RED_ORANGE
774 + )>55
775 + ){
776 + return;
777 + }
778 +
779 + var rect=el.getBoundingClientRect();
780 +
781 + if(
782 + rect.width<80||
783 + rect.height<24
784 + ){
785 + return;
786 + }
787 +
788 + el.style.setProperty(
789 + "border",
790 + "none",
791 + "important"
792 + );
793 +
794 + el.style.setProperty(
795 + "border-left",
796 + "none",
797 + "important"
798 + );
799 +
800 + el.style.setProperty(
801 + "border-top",
802 + "none",
803 + "important"
804 + );
805 +
806 + el.style.setProperty(
807 + "border-right",
808 + "none",
809 + "important"
810 + );
811 +
812 + el.style.setProperty(
813 + "border-bottom",
814 + "none",
815 + "important"
816 + );
817 +
818 + el.style.setProperty(
819 + "box-shadow",
820 + "none",
821 + "important"
822 + );
823 + });
824 + }
825 +
826 + /* =======================================================
827 + FULL-WIDTH THREE-LINE AREA LABELS
828 + ======================================================= */
829 +
830 + function compactText(value){
831 + return String(value||"")
832 + .replace(/\s+/g," ")
833 + .trim();
834 + }
835 +
836 + function makeThreeLineAreaLabels(){
837 + Array.from(
838 + root.querySelectorAll(
839 + ".arsn-area-label"
840 + )
841 + ).forEach(function(label){
842 + if(
843 + label.getAttribute(
844 + "data-sn-three-line"
845 + )==="1"
846 + ){
847 + return;
848 + }
849 +
850 + var number=
851 + label.querySelector(
852 + ":scope > .arsn-area-number"
853 + );
854 +
855 + var action=
856 + label.querySelector(
857 + ":scope > .arsn-area-action"
858 + );
859 +
860 + if(
861 + !number||
862 + !action
863 + ){
864 + return;
865 + }
866 +
867 + var clone=
868 + label.cloneNode(true);
869 +
870 + var cloneNumber=
871 + clone.querySelector(
872 + ":scope > .arsn-area-number"
873 + );
874 +
875 + var cloneAction=
876 + clone.querySelector(
877 + ":scope > .arsn-area-action"
878 + );
879 +
880 + if(cloneNumber){
881 + cloneNumber.remove();
882 + }
883 +
884 + if(cloneAction){
885 + cloneAction.remove();
886 + }
887 +
888 + var titleText=
889 + compactText(
890 + clone.textContent
891 + );
892 +
893 + if(!titleText){
894 + return;
895 + }
896 +
897 + var numberNode=
898 + number.cloneNode(true);
899 +
900 + var actionNode=
901 + action.cloneNode(true);
902 +
903 + var titleNode=
904 + document.createElement(
905 + "span"
906 + );
907 +
908 + titleNode.className=
909 + "sn-area-label-title";
910 +
911 + titleNode.textContent=
912 + titleText;
913 +
914 + while(label.firstChild){
915 + label.removeChild(
916 + label.firstChild
917 + );
918 + }
919 +
920 + label.appendChild(
921 + numberNode
922 + );
923 +
924 + label.appendChild(
925 + titleNode
926 + );
927 +
928 + label.appendChild(
929 + actionNode
930 + );
931 +
932 + label.setAttribute(
933 + "data-sn-three-line",
934 + "1"
935 + );
936 +
937 + var head=
938 + label.closest(
939 + ".arsn-area-head"
940 + );
941 +
942 + if(head){
943 + head.style.setProperty(
944 + "width",
945 + "100%",
946 + "important"
947 + );
948 +
949 + head.style.setProperty(
950 + "max-width",
951 + "100%",
952 + "important"
953 + );
954 +
955 + head.style.setProperty(
956 + "box-sizing",
957 + "border-box",
958 + "important"
959 + );
960 + }
961 + });
962 + }
963 +
964 + /* =======================================================
965 + PLACEHOLDER BADGE
966 + ======================================================= */
967 +
968 + function applyPlaceholderBadge(){
969 + if(!PLACEHOLDER)return;
970 +
971 + if(
972 + document.querySelector(
973 + ".sn-coming-soon-badge"
974 + )
975 + ){
976 + return;
977 + }
978 +
979 + var title=
980 + document.querySelector(
981 + "#document-title"
982 + )||
983 + document.querySelector(
984 + "h1"
985 + );
986 +
987 + if(!title)return;
988 +
989 + var badge=
990 + document.createElement(
991 + "span"
992 + );
993 +
994 + badge.className=
995 + "sn-coming-soon-badge";
996 +
997 + badge.textContent=
998 + PLACEHOLDER_LABEL;
999 +
1000 + badge.setAttribute(
1001 + "aria-label",
1002 + PLACEHOLDER_LABEL
1003 + );
1004 +
1005 + title.appendChild(
1006 + badge
1007 + );
1008 + }
1009 +
1010 + /* =======================================================
1011 + DETAIL PAGE OWN-ACCENT PROPAGATION
1012 + ======================================================= */
1013 +
1014 + function parseRGB(value){
1015 + var match=String(value||"").match(
1016 + /rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/i
1017 + );
1018 +
1019 + if(!match)return null;
1020 +
1021 + return [
1022 + Number(match[1]),
1023 + Number(match[2]),
1024 + Number(match[3])
1025 + ];
1026 + }
1027 +
1028 + function distance(a,b){
1029 + return Math.sqrt(
1030 + Math.pow(a[0]-b[0],2)+
1031 + Math.pow(a[1]-b[1],2)+
1032 + Math.pow(a[2]-b[2],2)
1033 + );
1034 + }
1035 +
1036 + function paletteMatch(cssColor){
1037 + var rgb=parseRGB(cssColor);
1038 +
1039 + if(!rgb)return null;
1040 +
1041 + var palette=[
1042 + {hex:"#21b6d7",rgb:[33,182,215]},
1043 + {hex:"#e94b13",rgb:[233,75,19]},
1044 + {hex:"#f0aa00",rgb:[240,170,0]},
1045 + {hex:"#38b76a",rgb:[56,183,106]}
1046 + ];
1047 +
1048 + var best=null;
1049 + var bestDistance=Infinity;
1050 +
1051 + palette.forEach(function(item){
1052 + var d=distance(rgb,item.rgb);
1053 +
1054 + if(d<bestDistance){
1055 + best=item;
1056 + bestDistance=d;
1057 + }
1058 + });
1059 +
1060 + return bestDistance<=30
1061 + ?best
1062 + :null;
1063 + }
1064 +
1065 + function propagateDetailAccents(){
1066 + if(PAGE_KIND!=="detail")return;
1067 +
1068 + Array.from(
1069 + root.querySelectorAll(
1070 + ".arsn-call,.dmp-call,.ido-call,.pp-call,"+
1071 + ".arsn-source,.dmp-source,.ido-source,.pp-source"
1072 + )
1073 + ).forEach(function(el){
1074 + if(!visible(el))return;
1075 +
1076 + var style=getComputedStyle(el);
1077 +
1078 + if(
1079 + num(style.borderTopWidth)>=2
1080 + ){
1081 + var match=
1082 + paletteMatch(
1083 + style.borderTopColor
1084 + );
1085 +
1086 + if(match){
1087 + el.style.setProperty(
1088 + "border-left",
1089 + "4px solid "+match.hex,
1090 + "important"
1091 + );
1092 + }
1093 + }
1094 + });
1095 +
1096 + // Warning families: explicit safety override.
1097 + Array.from(
1098 + root.querySelectorAll(
1099 + ".arsn-warn,.dmp-warn,.ido-warn,.pp-warn,"+
1100 + ".warn,.warning,.warningmessage,.errormessage"
1101 + )
1102 + ).forEach(function(el){
1103 + if(!visible(el))return;
1104 +
1105 + el.style.setProperty(
1106 + "border-left",
1107 + "4px solid #e94b13",
1108 + "important"
1109 + );
1110 + });
1111 +
1112 + // Info families: explicit orientation override.
1113 + Array.from(
1114 + root.querySelectorAll(
1115 + ".arsn-info,.dmp-info,.ido-info,.pp-info,.infomessage"
1116 + )
1117 + ).forEach(function(el){
1118 + if(!visible(el))return;
1119 +
1120 + el.style.setProperty(
1121 + "border-left",
1122 + "4px solid #21b6d7",
1123 + "important"
1124 + );
1125 + });
1126 + }
1127 +
1128 + /* =======================================================
1129 + OVERVIEW SEMANTIC THEME PALETTE
1130 + ======================================================= */
1131 +
1132 + function smallestThemeHeaders(){
1133 + return Array.from(
1134 + root.querySelectorAll(
1135 + "div,span,p,strong,h3,h4,h5,h6"
1136 + )
1137 + ).filter(function(el){
1138 + if(!visible(el))return false;
1139 + if(!themeFor(el.textContent))return false;
1140 +
1141 + return !Array.from(
1142 + el.children||[]
1143 + ).some(function(child){
1144 + return !!themeFor(
1145 + child.textContent
1146 + );
1147 + });
1148 + });
1149 + }
1150 +
1151 + function findOverviewCard(header){
1152 + var node=header.parentElement;
1153 + var candidates=[];
1154 +
1155 + while(node&&node!==root){
1156 + var rect=node.getBoundingClientRect();
1157 + var style=getComputedStyle(node);
1158 +
1159 + var border=
1160 + num(style.borderTopWidth)+
1161 + num(style.borderRightWidth)+
1162 + num(style.borderBottomWidth)+
1163 + num(style.borderLeftWidth);
1164 +
1165 + if(
1166 + rect.width>=220&&
1167 + rect.width<=800&&
1168 + rect.height>=120&&
1169 + border>=1
1170 + ){
1171 + candidates.push(node);
1172 + }
1173 +
1174 + node=node.parentElement;
1175 + }
1176 +
1177 + if(!candidates.length)return null;
1178 +
1179 + candidates.sort(function(a,b){
1180 + return (
1181 + b.getBoundingClientRect().height-
1182 + a.getBoundingClientRect().height
1183 + );
1184 + });
1185 +
1186 + return candidates[0];
1187 + }
1188 +
1189 + function rowCandidates(link,card){
1190 + var result=[];
1191 + var cardRect=
1192 + card.getBoundingClientRect();
1193 +
1194 + var node=link;
1195 +
1196 + while(node&&node!==card){
1197 + if(visible(node)){
1198 + var rect=
1199 + node.getBoundingClientRect();
1200 +
1201 + if(
1202 + rect.height<=105&&
1203 + rect.width>=
1204 + cardRect.width*.50&&
1205 + rect.width<=
1206 + cardRect.width*1.03
1207 + ){
1208 + result.push(node);
1209 + }
1210 + }
1211 +
1212 + node=node.parentElement;
1213 + }
1214 +
1215 + return result;
1216 + }
1217 +
1218 + function chooseOuterRow(
1219 + candidates,
1220 + link
1221 + ){
1222 + if(!candidates.length){
1223 + return link;
1224 + }
1225 +
1226 + var bordered=
1227 + candidates.filter(function(el){
1228 + return (
1229 + num(
1230 + getComputedStyle(el)
1231 + .borderLeftWidth
1232 + )>=1
1233 + );
1234 + });
1235 +
1236 + var pool=
1237 + bordered.length
1238 + ?bordered
1239 + :candidates;
1240 +
1241 + pool.sort(function(a,b){
1242 + var ar=
1243 + a.getBoundingClientRect();
1244 +
1245 + var br=
1246 + b.getBoundingClientRect();
1247 +
1248 + return (
1249 + ar.left-br.left||
1250 + br.width-ar.width
1251 + );
1252 + });
1253 +
1254 + return pool[0]||link;
1255 + }
1256 +
1257 + function applyOverviewPalette(){
1258 + if(PAGE_KIND!=="overview"){
1259 + return [];
1260 + }
1261 +
1262 + var headers=
1263 + smallestThemeHeaders()
1264 + .map(function(el){
1265 + return {
1266 + el:el,
1267 + theme:
1268 + themeFor(
1269 + el.textContent
1270 + ),
1271 + card:
1272 + findOverviewCard(
1273 + el
1274 + )
1275 + };
1276 + })
1277 + .filter(function(row){
1278 + return !!row.card;
1279 + });
1280 +
1281 + var unique=[];
1282 + var seenHeaders=new Set();
1283 +
1284 + headers.forEach(function(row){
1285 + var key=
1286 + row.theme.name+
1287 + "|"+
1288 + Math.round(
1289 + row.card
1290 + .getBoundingClientRect()
1291 + .left
1292 + )+
1293 + "|"+
1294 + Math.round(
1295 + row.el
1296 + .getBoundingClientRect()
1297 + .top
1298 + );
1299 +
1300 + if(!seenHeaders.has(key)){
1301 + seenHeaders.add(key);
1302 + unique.push(row);
1303 + }
1304 + });
1305 +
1306 + unique.forEach(function(row){
1307 + var headerRect=
1308 + row.el
1309 + .getBoundingClientRect();
1310 +
1311 + row.el.style.setProperty(
1312 + "background",
1313 + row.theme.bg,
1314 + "important"
1315 + );
1316 +
1317 + row.el.style.setProperty(
1318 + "color",
1319 + row.theme.text,
1320 + "important"
1321 + );
1322 +
1323 + row.el.style.setProperty(
1324 + "text-align",
1325 + "left",
1326 + "important"
1327 + );
1328 +
1329 + row.el.style.setProperty(
1330 + "word-spacing",
1331 + "normal",
1332 + "important"
1333 + );
1334 +
1335 + var later=
1336 + unique
1337 + .filter(function(other){
1338 + return (
1339 + other.card===row.card&&
1340 + other.el
1341 + .getBoundingClientRect()
1342 + .top>
1343 + headerRect.top+2
1344 + );
1345 + })
1346 + .sort(function(a,b){
1347 + return (
1348 + a.el
1349 + .getBoundingClientRect()
1350 + .top-
1351 + b.el
1352 + .getBoundingClientRect()
1353 + .top
1354 + );
1355 + });
1356 +
1357 + var stopTop=
1358 + later.length
1359 + ?later[0].el
1360 + .getBoundingClientRect()
1361 + .top
1362 + :Infinity;
1363 +
1364 + Array.from(
1365 + row.card.querySelectorAll("a")
1366 + ).forEach(function(link){
1367 + if(!visible(link))return;
1368 +
1369 + var rect=
1370 + link.getBoundingClientRect();
1371 +
1372 + if(
1373 + rect.top<=
1374 + headerRect.bottom-2||
1375 + rect.top>=
1376 + stopTop-2
1377 + ){
1378 + return;
1379 + }
1380 +
1381 + var candidates=
1382 + rowCandidates(
1383 + link,
1384 + row.card
1385 + );
1386 +
1387 + var target=
1388 + chooseOuterRow(
1389 + candidates,
1390 + link
1391 + );
1392 +
1393 + candidates.forEach(function(el){
1394 + el.style.setProperty(
1395 + "border-left",
1396 + "0 solid transparent",
1397 + "important"
1398 + );
1399 + });
1400 +
1401 + target.style.setProperty(
1402 + "border-left",
1403 + "3px solid "+
1404 + row.theme.accent,
1405 + "important"
1406 + );
1407 +
1408 + target.style.setProperty(
1409 + "box-sizing",
1410 + "border-box",
1411 + "important"
1412 + );
1413 + });
1414 + });
1415 +
1416 + return unique;
1417 + }
1418 +
1419 + /* =======================================================
1420 + OVERVIEW CARD HEIGHT + FIRST THEMATIC ROW
1421 + ======================================================= */
1422 +
1423 + function alignOverviewCards(headers){
1424 + if(
1425 + PAGE_KIND!=="overview"||
1426 + window.innerWidth<=MOBILE_MAX
1427 + ){
1428 + return;
1429 + }
1430 +
1431 + var cards=[];
1432 + var seen=new Set();
1433 +
1434 + headers.forEach(function(row){
1435 + if(!seen.has(row.card)){
1436 + seen.add(row.card);
1437 + cards.push(row.card);
1438 + }
1439 + });
1440 +
1441 + if(cards.length<2){
1442 + return;
1443 + }
1444 +
1445 + // Group cards by actual top position.
1446 + var groups=[];
1447 +
1448 + cards.forEach(function(card){
1449 + var top=
1450 + card.getBoundingClientRect().top;
1451 +
1452 + var group=null;
1453 +
1454 + for(var i=0;i<groups.length;i++){
1455 + if(
1456 + Math.abs(
1457 + groups[i].top-top
1458 + )<=ROW_TOLERANCE
1459 + ){
1460 + group=groups[i];
1461 + break;
1462 + }
1463 + }
1464 +
1465 + if(!group){
1466 + group={
1467 + top:top,
1468 + cards:[]
1469 + };
1470 + groups.push(group);
1471 + }
1472 +
1473 + group.cards.push(card);
1474 + });
1475 +
1476 + groups.forEach(function(group){
1477 + if(group.cards.length<2){
1478 + return;
1479 + }
1480 +
1481 + var firstHeaders=
1482 + group.cards.map(function(card){
1483 + var candidates=
1484 + headers
1485 + .filter(function(row){
1486 + return row.card===card;
1487 + })
1488 + .sort(function(a,b){
1489 + return (
1490 + a.el
1491 + .getBoundingClientRect()
1492 + .top-
1493 + b.el
1494 + .getBoundingClientRect()
1495 + .top
1496 + );
1497 + });
1498 +
1499 + return candidates.length
1500 + ?candidates[0]
1501 + :null;
1502 + });
1503 +
1504 + if(
1505 + !firstHeaders.some(function(row){
1506 + return !row;
1507 + })
1508 + ){
1509 + var targetTop=
1510 + Math.max.apply(
1511 + Math,
1512 + firstHeaders.map(function(row){
1513 + return (
1514 + row.el
1515 + .getBoundingClientRect()
1516 + .top-
1517 + row.card
1518 + .getBoundingClientRect()
1519 + .top
1520 + );
1521 + })
1522 + );
1523 +
1524 + firstHeaders.forEach(function(row){
1525 + var relativeTop=
1526 + row.el
1527 + .getBoundingClientRect()
1528 + .top-
1529 + row.card
1530 + .getBoundingClientRect()
1531 + .top;
1532 +
1533 + var delta=
1534 + targetTop-relativeTop;
1535 +
1536 + if(delta>1){
1537 + saveStyle(
1538 + row.el,
1539 + originalMargin,
1540 + "margin-top"
1541 + );
1542 +
1543 + var current=
1544 + num(
1545 + getComputedStyle(
1546 + row.el
1547 + ).marginTop
1548 + );
1549 +
1550 + row.el.style.setProperty(
1551 + "margin-top",
1552 + (
1553 + current+delta
1554 + )+"px"
1555 + );
1556 +
1557 + row.el.setAttribute(
1558 + "data-sn-master-first-row",
1559 + "1"
1560 + );
1561 +
1562 + managedMargin.add(
1563 + row.el
1564 + );
1565 + }
1566 + });
1567 + }
1568 +
1569 + var maxHeight=0;
1570 +
1571 + group.cards.forEach(function(card){
1572 + maxHeight=
1573 + Math.max(
1574 + maxHeight,
1575 + card
1576 + .getBoundingClientRect()
1577 + .height
1578 + );
1579 + });
1580 +
1581 + maxHeight=
1582 + Math.ceil(maxHeight);
1583 +
1584 + group.cards.forEach(function(card){
1585 + saveStyle(
1586 + card,
1587 + originalHeight,
1588 + "min-height"
1589 + );
1590 +
1591 + card.style.setProperty(
1592 + "min-height",
1593 + maxHeight+"px"
1594 + );
1595 +
1596 + card.setAttribute(
1597 + "data-sn-master-equal-height",
1598 + "1"
1599 + );
1600 +
1601 + managedHeight.add(
1602 + card
1603 + );
1604 + });
1605 + });
1606 + }
1607 +
1608 + /* =======================================================
1609 + DETAIL GRID EQUAL HEIGHT, DESKTOP ONLY
1610 + ======================================================= */
1611 +
1612 + function equaliseDetailGrids(){
1613 + if(
1614 + PAGE_KIND!=="detail"||
1615 + window.innerWidth<=MOBILE_MAX
1616 + ){
1617 + return;
1618 + }
1619 +
1620 + var selectors=[
1621 + ".arsn-grid",
1622 + ".arsn-grid-2",
1623 + ".arsn-grid-3",
1624 + ".dmp-grid",
1625 + ".ido-grid",
1626 + ".pp-grid"
1627 + ];
1628 +
1629 + selectors.forEach(function(selector){
1630 + Array.from(
1631 + root.querySelectorAll(selector)
1632 + ).forEach(function(grid){
1633 + var children=
1634 + Array.from(
1635 + grid.children||[]
1636 + ).filter(visible);
1637 +
1638 + if(children.length<2){
1639 + return;
1640 + }
1641 +
1642 + var groups=[];
1643 +
1644 + children.forEach(function(child){
1645 + var top=
1646 + child
1647 + .getBoundingClientRect()
1648 + .top;
1649 +
1650 + var group=null;
1651 +
1652 + for(var i=0;i<groups.length;i++){
1653 + if(
1654 + Math.abs(
1655 + groups[i].top-top
1656 + )<=ROW_TOLERANCE
1657 + ){
1658 + group=groups[i];
1659 + break;
1660 + }
1661 + }
1662 +
1663 + if(!group){
1664 + group={
1665 + top:top,
1666 + items:[]
1667 + };
1668 + groups.push(group);
1669 + }
1670 +
1671 + group.items.push(child);
1672 + });
1673 +
1674 + groups.forEach(function(group){
1675 + if(group.items.length<2){
1676 + return;
1677 + }
1678 +
1679 + var maxHeight=0;
1680 +
1681 + group.items.forEach(function(item){
1682 + maxHeight=
1683 + Math.max(
1684 + maxHeight,
1685 + item
1686 + .getBoundingClientRect()
1687 + .height
1688 + );
1689 + });
1690 +
1691 + maxHeight=
1692 + Math.ceil(maxHeight);
1693 +
1694 + group.items.forEach(function(item){
1695 + saveStyle(
1696 + item,
1697 + originalHeight,
1698 + "min-height"
1699 + );
1700 +
1701 + item.style.setProperty(
1702 + "min-height",
1703 + maxHeight+"px"
1704 + );
1705 +
1706 + item.setAttribute(
1707 + "data-sn-master-equal-height",
1708 + "1"
1709 + );
1710 +
1711 + managedHeight.add(item);
1712 + });
1713 + });
1714 + });
1715 + });
1716 + }
1717 +
1718 + /* =======================================================
1719 + RUN / RESPONSIVE SCHEDULING
1720 + ======================================================= */
1721 +
1722 + function run(){
1723 + if(running)return;
1724 +
1725 + running=true;
1726 +
1727 + try{
1728 + resetRuntime();
1729 + applyPlaceholderBadge();
1730 + propagateDetailAccents();
1731 +
1732 + var headers=
1733 + applyOverviewPalette();
1734 +
1735 + makeThreeLineAreaLabels();
1736 + makeFilledRedOrangeCTAsBorderless();
1737 +
1738 + if(
1739 + window.innerWidth>
1740 + MOBILE_MAX
1741 + ){
1742 + alignOverviewCards(
1743 + headers
1744 + );
1745 +
1746 + equaliseDetailGrids();
1747 + }
1748 + }finally{
1749 + running=false;
1750 + }
1751 + }
1752 +
1753 + function onResize(){
1754 + if(resizeTimer){
1755 + clearTimeout(
1756 + resizeTimer
1757 + );
1758 + }
1759 +
1760 + resizeTimer=
1761 + setTimeout(
1762 + function(){
1763 + resizeTimer=0;
1764 + run();
1765 + },
1766 + RESIZE_DEBOUNCE
1767 + );
1768 + }
1769 +
1770 + async function waitForReady(){
1771 + if(
1772 + document.readyState!=="complete"
1773 + ){
1774 + await new Promise(function(resolve){
1775 + window.addEventListener(
1776 + "load",
1777 + resolve,
1778 + {once:true}
1779 + );
1780 + });
1781 + }
1782 +
1783 + if(
1784 + document.fonts&&
1785 + document.fonts.ready
1786 + ){
1787 + try{
1788 + await document.fonts.ready;
1789 + }catch(error){}
1790 + }
1791 +
1792 + var images=
1793 + Array.from(
1794 + root.querySelectorAll("img")
1795 + );
1796 +
1797 + await Promise.all(
1798 + images.map(function(img){
1799 + if(img.complete){
1800 + return Promise.resolve();
1801 + }
1802 +
1803 + return new Promise(function(resolve){
1804 + var done=function(){
1805 + resolve();
1806 + };
1807 +
1808 + img.addEventListener(
1809 + "load",
1810 + done,
1811 + {once:true}
1812 + );
1813 +
1814 + img.addEventListener(
1815 + "error",
1816 + done,
1817 + {once:true}
1818 + );
1819 + });
1820 + })
1821 + );
1822 +
1823 + run();
1824 + }
1825 +
1826 + window.addEventListener(
1827 + "resize",
1828 + onResize,
1829 + {passive:true}
1830 + );
1831 +
1832 + waitForReady();
1833 +})();
1834 +</script>
1835 +
1836 +<!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_END -->
1837 +{{/html}}
1838 +