Ä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.11
bearbeitet von Veronika Kocher
am Freitag, 04 Sep. 2026 14:23
Änderungskommentar: Es gibt keinen Kommentar für diese Version

Zusammenfassung

Details

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