Änderungen von Dokument Art & Research Services Navigator
Zuletzt geändert von Veronika Kocher am Freitag, 18 Sep. 2026 16:47
Von Version 11.2
bearbeitet von Veronika Kocher
am Donnerstag, 03 Sep. 2026 14:15
am Donnerstag, 03 Sep. 2026 14:15
Änderungskommentar:
Es gibt keinen Kommentar für diese Version
Auf Version 1.6
bearbeitet von Veronika Kocher
am Mittwoch, 02 Sep. 2026 16:48
am Mittwoch, 02 Sep. 2026 16:48
Änderungskommentar:
Es gibt keinen Kommentar für diese Version
Zusammenfassung
-
Seiteneigenschaften (1 geändert, 0 hinzugefügt, 0 gelöscht)
Details
- Seiteneigenschaften
-
- Inhalt
-
... ... @@ -2,17 +2,23 @@ 2 2 3 3 Der **Service-Navigator Kunst & Forschung** hilft dir, für jede Phase deines Projekts die passende Orientierung, Services und Ressourcen zu finden. 4 4 5 -{{ infotitle="Unterstützungfür dein Projekt:"}}6 - 7 - **SupportKunstundForschung(SKF)**begleitet Projekt- undFördervorhabenundarbeitetjenach Bedarfmit denpassendenServicesderUniversität zusammen.5 +{{html}}<!-- ARSN_GOVERNANCE_ROUTING_V1 -->{{/html}} 6 +{{info title="So funktionieren die Zuständigkeiten"}} 7 +Der Navigator ist eine **abteilungsübergreifende Service-Landkarte**, keine eigene Organisationseinheit. Er ordnet Unterstützung entlang des Projektlebenszyklus und aus Sicht des konkreten Anliegens. 8 8 9 - Der Navigator führt dich entlang der Projektphasen zu den Angeboten und Ansprechstellen, die für dein Vorhaben relevant sind. 9 +**Support Kunst und Forschung (SKF)** ist die zentrale Projekt- und Förderdrehscheibe für projektorientierte künstlerische und wissenschaftliche Forschung: Projektentwicklung, Förderungen und Calls, Anträge, Koordination geförderter Projekte und förderbezogene Berichtslegung. 10 + 11 +**Fachzuständige Service-Stellen** behalten die Verantwortung für ihre Bereiche – zum Beispiel Universitätsbibliothek / Forschungsdatenmanagement / Repository, IT & Digitalisierung, Recht / Datenschutz, Finanzen / Personal, Publikationen / Presse & Kommunikation / Veranstaltungsmanagement, Facility Management und International Office. 12 + 13 +Das **Institut, die Abteilung oder eine andere tragende Einheit** bleibt die künstlerische bzw. akademische Verankerung des Projekts. Der Navigator verbindet diese Zuständigkeiten; er überträgt keine Fachverantwortung zwischen Organisationseinheiten. 10 10 {{/info}} 11 11 16 +(% style="margin:20px 0 26px 0;" %) 17 +((( 18 +{{box title="Service-Navigator Kunst & Forschung durchsuchen"}} 19 +Gib ein Thema, Synonym oder eine typische Suchanfrage ein. Passende Seiten werden sofort vorgeschlagen. Die Suchbegriffe auf den Themenseiten verwenden dasselbe kontrollierte Vokabular. 20 + 12 12 {{html clean="false"}} 13 -<section data-arsn-search-block-fix="v5" style="margin:20px 0 26px 0;padding:16px 18px;border:1px solid #e3ded6;border-radius:10px;background:#fcfbf8;box-shadow:0 1px 2px rgba(0,0,0,.035);"> 14 - <h2 style="font-size:20px;margin:0 0 6px 0;color:#35312d;">Service-Navigator Kunst & Forschung durchsuchen</h2> 15 - <p style="margin:0 0 12px 0;color:#6a655e;">Gib ein Thema, Synonym oder eine typische Suchanfrage ein. Passende Seiten werden sofort vorgeschlagen. Die Suchbegriffe auf den Themenseiten verwenden dasselbe kontrollierte Vokabular.</p> 16 16 <form 17 17 id="arsn-search-form" 18 18 action="https://xwiki.uni-ak.ac.at/bin/view/Main/SolrSearch" ... ... @@ -335,8 +335,9 @@ 335 335 } 336 336 })(); 337 337 </script> 338 -</section> 339 339 {{/html}} 345 +{{/box}} 346 +))) 340 340 341 341 (% style="margin:10px 0 16px 0;color:#6a655e;font-size:13px;" %) 342 342 ((( ... ... @@ -628,1410 +628,11 @@ 628 628 == Brauchst du Hilfe beim richtigen Weg? == 629 629 630 630 {{info title="Mit der passenden Stelle starten"}} 631 - Bei**Projektentwicklung, Förderung, Anträgenund derKoordination geförderter Kunst- und Forschungsprojekte**ist **Support Kunst und Forschung**ein guter erster Anlaufpunkt.638 +Für **Projektentwicklung, Förderung, Anträge und die Koordination geförderter Kunst- und Forschungsprojekte** starte bei **Support Kunst und Forschung**. 632 632 633 -Bei spezifischen Fachfragen führen die Themenseiten direkt zu den passenden Services der Universität. Wenn mehrere Bereiche zusammenkommen, hilft dir der Navigator dabei, die nächsten sinnvollen Schritte einzuordnen. 640 +Für **fachspezifische Fragen** nutze die auf der jeweiligen Themenseite genannte zuständige Service-Stelle. Der Navigator ist die gemeinsame Eingangstür; die Fachstellen bleiben für ihre Bereiche verantwortlich. 641 + 642 +{{html}}<!-- Redaktion: zentralen Routing-/Kontaktformular-Link ergänzen, sobald verfügbar. -->{{/html}} 634 634 {{/info}} 635 635 ))) 636 636 637 -{{html clean="false"}} 638 -<!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_START --> 639 - 640 -<style data-sn-service-navigator-master="1"> 641 -/* ========================================================= 642 - MASTER TYPOGRAPHY 643 - ========================================================= */ 644 -#xwikicontent h1, 645 -#xwikicontent h2, 646 -#xwikicontent h3, 647 -#xwikicontent h4, 648 -#xwikicontent h5, 649 -#xwikicontent h6, 650 -#xwikicontent .box-title, 651 -#xwikicontent [role="heading"], 652 -#xwikicontent h1 a, 653 -#xwikicontent h2 a, 654 -#xwikicontent h3 a, 655 -#xwikicontent h4 a, 656 -#xwikicontent h5 a, 657 -#xwikicontent h6 a, 658 -#xwikicontent .box-title a, 659 -#xwikicontent [role="heading"] a{ 660 - text-align:left!important; 661 - text-justify:auto!important; 662 - word-spacing:normal!important; 663 -} 664 - 665 -/* ========================================================= 666 - COMING SOON / IN VORBEREITUNG 667 - ========================================================= */ 668 -.sn-coming-soon-badge{ 669 - display:inline-block; 670 - vertical-align:middle; 671 - margin-left:10px; 672 - padding:4px 8px; 673 - border-radius:14px; 674 - border:1px solid #efd9cc; 675 - background:#fff4ee; 676 - color:#8a4d36; 677 - font-size:11px; 678 - font-weight:700; 679 - letter-spacing:.055em; 680 - line-height:1.2; 681 - white-space:nowrap; 682 -} 683 - 684 -/* ========================================================= 685 - NATIVE / DETAIL CALLOUT GEOMETRY 686 - Preserve existing backgrounds. 687 - ========================================================= */ 688 -#xwikicontent .arsn-info, 689 -#xwikicontent .dmp-info, 690 -#xwikicontent .ido-info, 691 -#xwikicontent .pp-info, 692 -#xwikicontent .infomessage{ 693 - box-sizing:border-box!important; 694 - border-left:4px solid #21b6d7!important; 695 - border-radius:8px; 696 - text-align:left!important; 697 - word-spacing:normal!important; 698 -} 699 - 700 -#xwikicontent .arsn-warn, 701 -#xwikicontent .dmp-warn, 702 -#xwikicontent .ido-warn, 703 -#xwikicontent .pp-warn, 704 -#xwikicontent .warn, 705 -#xwikicontent .warning, 706 -#xwikicontent .warningmessage, 707 -#xwikicontent .errormessage{ 708 - box-sizing:border-box!important; 709 - border-left:4px solid #e94b13!important; 710 - border-radius:8px; 711 - text-align:left!important; 712 - word-spacing:normal!important; 713 -} 714 - 715 -[data-sn-master-equal-height], 716 -[data-sn-master-first-row]{ 717 - box-sizing:border-box; 718 -} 719 - 720 -/* ========================================================= 721 - FULL-WIDTH THREE-LINE NUMBER / TITLE / SUBTITLE BLOCKS 722 - ========================================================= */ 723 -#xwikicontent .arsn-area-label[data-sn-three-line="1"]{ 724 - display:grid!important; 725 - grid-template-columns:minmax(0,1fr)!important; 726 - grid-auto-rows:auto!important; 727 - width:100%!important; 728 - max-width:none!important; 729 - box-sizing:border-box!important; 730 - justify-items:start!important; 731 - align-items:start!important; 732 - gap:2px!important; 733 - text-align:left!important; 734 - text-align-last:left!important; 735 - text-justify:auto!important; 736 - word-spacing:normal!important; 737 - white-space:normal!important; 738 -} 739 -#xwikicontent .arsn-area-label[data-sn-three-line="1"] > .arsn-area-number, 740 -#xwikicontent .arsn-area-label[data-sn-three-line="1"] > .sn-area-label-title, 741 -#xwikicontent .arsn-area-label[data-sn-three-line="1"] > .arsn-area-action{ 742 - display:block!important; 743 - width:100%!important; 744 - margin:0!important; 745 - text-align:left!important; 746 - text-align-last:left!important; 747 - text-justify:auto!important; 748 - word-spacing:normal!important; 749 - white-space:normal!important; 750 -} 751 -</style> 752 - 753 -<script data-sn-service-navigator-master="1"> 754 -(function(){ 755 - "use strict"; 756 - 757 - var PAGE_KIND="overview"; 758 - var PLACEHOLDER=false; 759 - var PLACEHOLDER_LABEL="IN VORBEREITUNG"; 760 - 761 - var MOBILE_MAX=767; 762 - var ROW_TOLERANCE=6; 763 - var RESIZE_DEBOUNCE=220; 764 - 765 - var root= 766 - document.getElementById("xwikicontent")|| 767 - document.querySelector(".xwiki-rendering-content")|| 768 - document.querySelector("main")|| 769 - document.body; 770 - 771 - if(!root)return; 772 - 773 - var managedHeight=new Set(); 774 - var managedMargin=new Set(); 775 - var originalHeight=new WeakMap(); 776 - var originalMargin=new WeakMap(); 777 - 778 - var resizeTimer=0; 779 - var running=false; 780 - 781 - var THEMES=[ 782 - { 783 - name:"BLUE", 784 - accent:"#21b6d7", 785 - bg:"#eaf7fb", 786 - text:"#315d68", 787 - labels:[ 788 - "HIER STARTEN", 789 - "ENTSCHEIDEN", 790 - "ÜBERPRÜFEN & ANPASSEN", 791 - "START HERE", 792 - "DECIDE", 793 - "REVIEW & ADAPT" 794 - ] 795 - }, 796 - { 797 - name:"RED", 798 - accent:"#e94b13", 799 - bg:"#fff1ec", 800 - text:"#8a4d36", 801 - labels:[ 802 - "PLANEN & ORGANISIEREN", 803 - "ORGANISIEREN & DOKUMENTIEREN", 804 - "PUBLIZIEREN & PRÄSENTIEREN", 805 - "PLAN & ORGANISE", 806 - "PLAN & ORGANIZE", 807 - "ORGANISE & DOCUMENT", 808 - "ORGANIZE & DOCUMENT", 809 - "PUBLISH & PRESENT" 810 - ] 811 - }, 812 - { 813 - name:"YELLOW", 814 - accent:"#f0aa00", 815 - bg:"#fff8e7", 816 - text:"#785b17", 817 - labels:[ 818 - "SCHÜTZEN & KLÄREN", 819 - "STANDARDISIEREN & IDENTIFIZIEREN", 820 - "ÖFFNEN, NACHNUTZEN & AUFFINDBAR MACHEN", 821 - "PROTECT & CLARIFY", 822 - "STANDARDISE & IDENTIFY", 823 - "STANDARDIZE & IDENTIFY", 824 - "OPEN, REUSE & MAKE FINDABLE" 825 - ] 826 - }, 827 - { 828 - name:"GREEN", 829 - accent:"#38b76a", 830 - bg:"#edf9f1", 831 - text:"#3f7451", 832 - labels:[ 833 - "INFRASTRUKTUR EINRICHTEN", 834 - "INFRASTRUKTUR & ZUSAMMENARBEIT EINRICHTEN", 835 - "SPEICHERN & ZUGRIFF STEUERN", 836 - "REPOSITORIUM, ERHALTEN & ÜBERGEBEN", 837 - "SET UP INFRASTRUCTURE", 838 - "SET UP INFRASTRUCTURE & COLLABORATION", 839 - "STORE & CONTROL ACCESS", 840 - "REPOSITORY, PRESERVE & HAND OVER" 841 - ] 842 - } 843 - ]; 844 - 845 - function num(value){ 846 - var n=parseFloat(value); 847 - return Number.isFinite(n)?n:0; 848 - } 849 - 850 - function norm(value){ 851 - return String(value||"") 852 - .replace(/\s+/g," ") 853 - .trim() 854 - .toUpperCase(); 855 - } 856 - 857 - function visible(el){ 858 - if(!el||el.nodeType!==1)return false; 859 - 860 - var style=getComputedStyle(el); 861 - var rect=el.getBoundingClientRect(); 862 - 863 - return ( 864 - style.display!=="none"&& 865 - style.visibility!=="hidden"&& 866 - rect.width>20&& 867 - rect.height>4 868 - ); 869 - } 870 - 871 - function saveStyle(el,map,property){ 872 - if(map.has(el))return; 873 - 874 - map.set(el,{ 875 - value:el.style.getPropertyValue(property), 876 - priority:el.style.getPropertyPriority(property) 877 - }); 878 - } 879 - 880 - function restoreStyle(el,map,property){ 881 - var original=map.get(el); 882 - 883 - if(original&&original.value){ 884 - el.style.setProperty( 885 - property, 886 - original.value, 887 - original.priority||"" 888 - ); 889 - }else{ 890 - el.style.removeProperty(property); 891 - } 892 - } 893 - 894 - function resetRuntime(){ 895 - managedHeight.forEach(function(el){ 896 - restoreStyle( 897 - el, 898 - originalHeight, 899 - "min-height" 900 - ); 901 - el.removeAttribute( 902 - "data-sn-master-equal-height" 903 - ); 904 - }); 905 - 906 - managedMargin.forEach(function(el){ 907 - restoreStyle( 908 - el, 909 - originalMargin, 910 - "margin-top" 911 - ); 912 - el.removeAttribute( 913 - "data-sn-master-first-row" 914 - ); 915 - }); 916 - 917 - managedHeight.clear(); 918 - managedMargin.clear(); 919 - } 920 - 921 - function themeFor(text){ 922 - var value=norm(text); 923 - 924 - for(var i=0;i<THEMES.length;i++){ 925 - for(var j=0;j<THEMES[i].labels.length;j++){ 926 - var label=THEMES[i].labels[j]; 927 - 928 - if( 929 - value===label|| 930 - value.indexOf(label+" ")===0|| 931 - value.indexOf(label+" -")===0|| 932 - value.indexOf(label+" ·")===0 933 - ){ 934 - return THEMES[i]; 935 - } 936 - } 937 - } 938 - 939 - return null; 940 - } 941 - 942 - /* ======================================================= 943 - BORDERLESS FILLED RED/ORANGE CTA BUTTONS 944 - ======================================================= */ 945 - 946 - function colourDistance(a,b){ 947 - return Math.sqrt( 948 - Math.pow(a[0]-b[0],2)+ 949 - Math.pow(a[1]-b[1],2)+ 950 - Math.pow(a[2]-b[2],2) 951 - ); 952 - } 953 - 954 - function makeFilledRedOrangeCTAsBorderless(){ 955 - var RED_ORANGE=[233,75,19]; 956 - 957 - Array.from( 958 - root.querySelectorAll( 959 - 'a,button,[role="button"],input[type="submit"],input[type="button"]' 960 - ) 961 - ).forEach(function(el){ 962 - if(!visible(el))return; 963 - 964 - var style=getComputedStyle(el); 965 - var rgb=parseRGB(style.backgroundColor); 966 - 967 - if(!rgb)return; 968 - 969 - if( 970 - colourDistance( 971 - rgb, 972 - RED_ORANGE 973 - )>55 974 - ){ 975 - return; 976 - } 977 - 978 - var rect=el.getBoundingClientRect(); 979 - 980 - if( 981 - rect.width<80|| 982 - rect.height<24 983 - ){ 984 - return; 985 - } 986 - 987 - el.style.setProperty( 988 - "border", 989 - "none", 990 - "important" 991 - ); 992 - 993 - el.style.setProperty( 994 - "border-left", 995 - "none", 996 - "important" 997 - ); 998 - 999 - el.style.setProperty( 1000 - "border-top", 1001 - "none", 1002 - "important" 1003 - ); 1004 - 1005 - el.style.setProperty( 1006 - "border-right", 1007 - "none", 1008 - "important" 1009 - ); 1010 - 1011 - el.style.setProperty( 1012 - "border-bottom", 1013 - "none", 1014 - "important" 1015 - ); 1016 - 1017 - el.style.setProperty( 1018 - "box-shadow", 1019 - "none", 1020 - "important" 1021 - ); 1022 - }); 1023 - } 1024 - 1025 - /* ======================================================= 1026 - FULL-WIDTH THREE-LINE AREA LABELS 1027 - ======================================================= */ 1028 - 1029 - function compactText(value){ 1030 - return String(value||"") 1031 - .replace(/\s+/g," ") 1032 - .trim(); 1033 - } 1034 - 1035 - function makeThreeLineAreaLabels(){ 1036 - Array.from( 1037 - root.querySelectorAll( 1038 - ".arsn-area-label" 1039 - ) 1040 - ).forEach(function(label){ 1041 - if( 1042 - label.getAttribute( 1043 - "data-sn-three-line" 1044 - )==="1" 1045 - ){ 1046 - return; 1047 - } 1048 - 1049 - var number= 1050 - label.querySelector( 1051 - ":scope > .arsn-area-number" 1052 - ); 1053 - 1054 - var action= 1055 - label.querySelector( 1056 - ":scope > .arsn-area-action" 1057 - ); 1058 - 1059 - if( 1060 - !number|| 1061 - !action 1062 - ){ 1063 - return; 1064 - } 1065 - 1066 - var clone= 1067 - label.cloneNode(true); 1068 - 1069 - var cloneNumber= 1070 - clone.querySelector( 1071 - ":scope > .arsn-area-number" 1072 - ); 1073 - 1074 - var cloneAction= 1075 - clone.querySelector( 1076 - ":scope > .arsn-area-action" 1077 - ); 1078 - 1079 - if(cloneNumber){ 1080 - cloneNumber.remove(); 1081 - } 1082 - 1083 - if(cloneAction){ 1084 - cloneAction.remove(); 1085 - } 1086 - 1087 - var titleText= 1088 - compactText( 1089 - clone.textContent 1090 - ); 1091 - 1092 - if(!titleText){ 1093 - return; 1094 - } 1095 - 1096 - var numberNode= 1097 - number.cloneNode(true); 1098 - 1099 - var actionNode= 1100 - action.cloneNode(true); 1101 - 1102 - var titleNode= 1103 - document.createElement( 1104 - "span" 1105 - ); 1106 - 1107 - titleNode.className= 1108 - "sn-area-label-title"; 1109 - 1110 - titleNode.textContent= 1111 - titleText; 1112 - 1113 - while(label.firstChild){ 1114 - label.removeChild( 1115 - label.firstChild 1116 - ); 1117 - } 1118 - 1119 - label.appendChild( 1120 - numberNode 1121 - ); 1122 - 1123 - label.appendChild( 1124 - titleNode 1125 - ); 1126 - 1127 - label.appendChild( 1128 - actionNode 1129 - ); 1130 - 1131 - label.setAttribute( 1132 - "data-sn-three-line", 1133 - "1" 1134 - ); 1135 - 1136 - var head= 1137 - label.closest( 1138 - ".arsn-area-head" 1139 - ); 1140 - 1141 - if(head){ 1142 - head.style.setProperty( 1143 - "width", 1144 - "100%", 1145 - "important" 1146 - ); 1147 - 1148 - head.style.setProperty( 1149 - "max-width", 1150 - "100%", 1151 - "important" 1152 - ); 1153 - 1154 - head.style.setProperty( 1155 - "box-sizing", 1156 - "border-box", 1157 - "important" 1158 - ); 1159 - } 1160 - }); 1161 - } 1162 - 1163 - /* ======================================================= 1164 - PLACEHOLDER BADGE 1165 - ======================================================= */ 1166 - 1167 - function applyPlaceholderBadge(){ 1168 - if(!PLACEHOLDER)return; 1169 - 1170 - if( 1171 - document.querySelector( 1172 - ".sn-coming-soon-badge" 1173 - ) 1174 - ){ 1175 - return; 1176 - } 1177 - 1178 - var title= 1179 - document.querySelector( 1180 - "#document-title" 1181 - )|| 1182 - document.querySelector( 1183 - "h1" 1184 - ); 1185 - 1186 - if(!title)return; 1187 - 1188 - var badge= 1189 - document.createElement( 1190 - "span" 1191 - ); 1192 - 1193 - badge.className= 1194 - "sn-coming-soon-badge"; 1195 - 1196 - badge.textContent= 1197 - PLACEHOLDER_LABEL; 1198 - 1199 - badge.setAttribute( 1200 - "aria-label", 1201 - PLACEHOLDER_LABEL 1202 - ); 1203 - 1204 - title.appendChild( 1205 - badge 1206 - ); 1207 - } 1208 - 1209 - /* ======================================================= 1210 - DETAIL PAGE OWN-ACCENT PROPAGATION 1211 - ======================================================= */ 1212 - 1213 - function parseRGB(value){ 1214 - var match=String(value||"").match( 1215 - /rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/i 1216 - ); 1217 - 1218 - if(!match)return null; 1219 - 1220 - return [ 1221 - Number(match[1]), 1222 - Number(match[2]), 1223 - Number(match[3]) 1224 - ]; 1225 - } 1226 - 1227 - function distance(a,b){ 1228 - return Math.sqrt( 1229 - Math.pow(a[0]-b[0],2)+ 1230 - Math.pow(a[1]-b[1],2)+ 1231 - Math.pow(a[2]-b[2],2) 1232 - ); 1233 - } 1234 - 1235 - function paletteMatch(cssColor){ 1236 - var rgb=parseRGB(cssColor); 1237 - 1238 - if(!rgb)return null; 1239 - 1240 - var palette=[ 1241 - {hex:"#21b6d7",rgb:[33,182,215]}, 1242 - {hex:"#e94b13",rgb:[233,75,19]}, 1243 - {hex:"#f0aa00",rgb:[240,170,0]}, 1244 - {hex:"#38b76a",rgb:[56,183,106]} 1245 - ]; 1246 - 1247 - var best=null; 1248 - var bestDistance=Infinity; 1249 - 1250 - palette.forEach(function(item){ 1251 - var d=distance(rgb,item.rgb); 1252 - 1253 - if(d<bestDistance){ 1254 - best=item; 1255 - bestDistance=d; 1256 - } 1257 - }); 1258 - 1259 - return bestDistance<=30 1260 - ?best 1261 - :null; 1262 - } 1263 - 1264 - function propagateDetailAccents(){ 1265 - if(PAGE_KIND!=="detail")return; 1266 - 1267 - Array.from( 1268 - root.querySelectorAll( 1269 - ".arsn-call,.dmp-call,.ido-call,.pp-call,"+ 1270 - ".arsn-source,.dmp-source,.ido-source,.pp-source" 1271 - ) 1272 - ).forEach(function(el){ 1273 - if(!visible(el))return; 1274 - 1275 - var style=getComputedStyle(el); 1276 - 1277 - if( 1278 - num(style.borderTopWidth)>=2 1279 - ){ 1280 - var match= 1281 - paletteMatch( 1282 - style.borderTopColor 1283 - ); 1284 - 1285 - if(match){ 1286 - el.style.setProperty( 1287 - "border-left", 1288 - "4px solid "+match.hex, 1289 - "important" 1290 - ); 1291 - } 1292 - } 1293 - }); 1294 - 1295 - // Warning families: explicit safety override. 1296 - Array.from( 1297 - root.querySelectorAll( 1298 - ".arsn-warn,.dmp-warn,.ido-warn,.pp-warn,"+ 1299 - ".warn,.warning,.warningmessage,.errormessage" 1300 - ) 1301 - ).forEach(function(el){ 1302 - if(!visible(el))return; 1303 - 1304 - el.style.setProperty( 1305 - "border-left", 1306 - "4px solid #e94b13", 1307 - "important" 1308 - ); 1309 - }); 1310 - 1311 - // Info families: explicit orientation override. 1312 - Array.from( 1313 - root.querySelectorAll( 1314 - ".arsn-info,.dmp-info,.ido-info,.pp-info,.infomessage" 1315 - ) 1316 - ).forEach(function(el){ 1317 - if(!visible(el))return; 1318 - 1319 - el.style.setProperty( 1320 - "border-left", 1321 - "4px solid #21b6d7", 1322 - "important" 1323 - ); 1324 - }); 1325 - } 1326 - 1327 - /* ======================================================= 1328 - OVERVIEW SEMANTIC THEME PALETTE 1329 - ======================================================= */ 1330 - 1331 - function smallestThemeHeaders(){ 1332 - return Array.from( 1333 - root.querySelectorAll( 1334 - "div,span,p,strong,h3,h4,h5,h6" 1335 - ) 1336 - ).filter(function(el){ 1337 - if(!visible(el))return false; 1338 - if(!themeFor(el.textContent))return false; 1339 - 1340 - return !Array.from( 1341 - el.children||[] 1342 - ).some(function(child){ 1343 - return !!themeFor( 1344 - child.textContent 1345 - ); 1346 - }); 1347 - }); 1348 - } 1349 - 1350 - function findOverviewCard(header){ 1351 - var node=header.parentElement; 1352 - var candidates=[]; 1353 - 1354 - while(node&&node!==root){ 1355 - var rect=node.getBoundingClientRect(); 1356 - var style=getComputedStyle(node); 1357 - 1358 - var border= 1359 - num(style.borderTopWidth)+ 1360 - num(style.borderRightWidth)+ 1361 - num(style.borderBottomWidth)+ 1362 - num(style.borderLeftWidth); 1363 - 1364 - if( 1365 - rect.width>=220&& 1366 - rect.width<=800&& 1367 - rect.height>=120&& 1368 - border>=1 1369 - ){ 1370 - candidates.push(node); 1371 - } 1372 - 1373 - node=node.parentElement; 1374 - } 1375 - 1376 - if(!candidates.length)return null; 1377 - 1378 - candidates.sort(function(a,b){ 1379 - return ( 1380 - b.getBoundingClientRect().height- 1381 - a.getBoundingClientRect().height 1382 - ); 1383 - }); 1384 - 1385 - return candidates[0]; 1386 - } 1387 - 1388 - function rowCandidates(link,card){ 1389 - var result=[]; 1390 - var cardRect= 1391 - card.getBoundingClientRect(); 1392 - 1393 - var node=link; 1394 - 1395 - while(node&&node!==card){ 1396 - if(visible(node)){ 1397 - var rect= 1398 - node.getBoundingClientRect(); 1399 - 1400 - if( 1401 - rect.height<=105&& 1402 - rect.width>= 1403 - cardRect.width*.50&& 1404 - rect.width<= 1405 - cardRect.width*1.03 1406 - ){ 1407 - result.push(node); 1408 - } 1409 - } 1410 - 1411 - node=node.parentElement; 1412 - } 1413 - 1414 - return result; 1415 - } 1416 - 1417 - function chooseOuterRow( 1418 - candidates, 1419 - link 1420 - ){ 1421 - if(!candidates.length){ 1422 - return link; 1423 - } 1424 - 1425 - var bordered= 1426 - candidates.filter(function(el){ 1427 - return ( 1428 - num( 1429 - getComputedStyle(el) 1430 - .borderLeftWidth 1431 - )>=1 1432 - ); 1433 - }); 1434 - 1435 - var pool= 1436 - bordered.length 1437 - ?bordered 1438 - :candidates; 1439 - 1440 - pool.sort(function(a,b){ 1441 - var ar= 1442 - a.getBoundingClientRect(); 1443 - 1444 - var br= 1445 - b.getBoundingClientRect(); 1446 - 1447 - return ( 1448 - ar.left-br.left|| 1449 - br.width-ar.width 1450 - ); 1451 - }); 1452 - 1453 - return pool[0]||link; 1454 - } 1455 - 1456 - function applyOverviewPalette(){ 1457 - if(PAGE_KIND!=="overview"){ 1458 - return []; 1459 - } 1460 - 1461 - var headers= 1462 - smallestThemeHeaders() 1463 - .map(function(el){ 1464 - return { 1465 - el:el, 1466 - theme: 1467 - themeFor( 1468 - el.textContent 1469 - ), 1470 - card: 1471 - findOverviewCard( 1472 - el 1473 - ) 1474 - }; 1475 - }) 1476 - .filter(function(row){ 1477 - return !!row.card; 1478 - }); 1479 - 1480 - var unique=[]; 1481 - var seenHeaders=new Set(); 1482 - 1483 - headers.forEach(function(row){ 1484 - var key= 1485 - row.theme.name+ 1486 - "|"+ 1487 - Math.round( 1488 - row.card 1489 - .getBoundingClientRect() 1490 - .left 1491 - )+ 1492 - "|"+ 1493 - Math.round( 1494 - row.el 1495 - .getBoundingClientRect() 1496 - .top 1497 - ); 1498 - 1499 - if(!seenHeaders.has(key)){ 1500 - seenHeaders.add(key); 1501 - unique.push(row); 1502 - } 1503 - }); 1504 - 1505 - unique.forEach(function(row){ 1506 - var headerRect= 1507 - row.el 1508 - .getBoundingClientRect(); 1509 - 1510 - row.el.style.setProperty( 1511 - "background", 1512 - row.theme.bg, 1513 - "important" 1514 - ); 1515 - 1516 - row.el.style.setProperty( 1517 - "color", 1518 - row.theme.text, 1519 - "important" 1520 - ); 1521 - 1522 - row.el.style.setProperty( 1523 - "text-align", 1524 - "left", 1525 - "important" 1526 - ); 1527 - 1528 - row.el.style.setProperty( 1529 - "word-spacing", 1530 - "normal", 1531 - "important" 1532 - ); 1533 - 1534 - var later= 1535 - unique 1536 - .filter(function(other){ 1537 - return ( 1538 - other.card===row.card&& 1539 - other.el 1540 - .getBoundingClientRect() 1541 - .top> 1542 - headerRect.top+2 1543 - ); 1544 - }) 1545 - .sort(function(a,b){ 1546 - return ( 1547 - a.el 1548 - .getBoundingClientRect() 1549 - .top- 1550 - b.el 1551 - .getBoundingClientRect() 1552 - .top 1553 - ); 1554 - }); 1555 - 1556 - var stopTop= 1557 - later.length 1558 - ?later[0].el 1559 - .getBoundingClientRect() 1560 - .top 1561 - :Infinity; 1562 - 1563 - Array.from( 1564 - row.card.querySelectorAll("a") 1565 - ).forEach(function(link){ 1566 - if(!visible(link))return; 1567 - 1568 - var rect= 1569 - link.getBoundingClientRect(); 1570 - 1571 - if( 1572 - rect.top<= 1573 - headerRect.bottom-2|| 1574 - rect.top>= 1575 - stopTop-2 1576 - ){ 1577 - return; 1578 - } 1579 - 1580 - var candidates= 1581 - rowCandidates( 1582 - link, 1583 - row.card 1584 - ); 1585 - 1586 - var target= 1587 - chooseOuterRow( 1588 - candidates, 1589 - link 1590 - ); 1591 - 1592 - candidates.forEach(function(el){ 1593 - el.style.setProperty( 1594 - "border-left", 1595 - "0 solid transparent", 1596 - "important" 1597 - ); 1598 - }); 1599 - 1600 - target.style.setProperty( 1601 - "border-left", 1602 - "3px solid "+ 1603 - row.theme.accent, 1604 - "important" 1605 - ); 1606 - 1607 - target.style.setProperty( 1608 - "box-sizing", 1609 - "border-box", 1610 - "important" 1611 - ); 1612 - }); 1613 - }); 1614 - 1615 - return unique; 1616 - } 1617 - 1618 - /* ======================================================= 1619 - OVERVIEW CARD HEIGHT + FIRST THEMATIC ROW 1620 - ======================================================= */ 1621 - 1622 - function alignOverviewCards(headers){ 1623 - if( 1624 - PAGE_KIND!=="overview"|| 1625 - window.innerWidth<=MOBILE_MAX 1626 - ){ 1627 - return; 1628 - } 1629 - 1630 - var cards=[]; 1631 - var seen=new Set(); 1632 - 1633 - headers.forEach(function(row){ 1634 - if(!seen.has(row.card)){ 1635 - seen.add(row.card); 1636 - cards.push(row.card); 1637 - } 1638 - }); 1639 - 1640 - if(cards.length<2){ 1641 - return; 1642 - } 1643 - 1644 - // Group cards by actual top position. 1645 - var groups=[]; 1646 - 1647 - cards.forEach(function(card){ 1648 - var top= 1649 - card.getBoundingClientRect().top; 1650 - 1651 - var group=null; 1652 - 1653 - for(var i=0;i<groups.length;i++){ 1654 - if( 1655 - Math.abs( 1656 - groups[i].top-top 1657 - )<=ROW_TOLERANCE 1658 - ){ 1659 - group=groups[i]; 1660 - break; 1661 - } 1662 - } 1663 - 1664 - if(!group){ 1665 - group={ 1666 - top:top, 1667 - cards:[] 1668 - }; 1669 - groups.push(group); 1670 - } 1671 - 1672 - group.cards.push(card); 1673 - }); 1674 - 1675 - groups.forEach(function(group){ 1676 - if(group.cards.length<2){ 1677 - return; 1678 - } 1679 - 1680 - var firstHeaders= 1681 - group.cards.map(function(card){ 1682 - var candidates= 1683 - headers 1684 - .filter(function(row){ 1685 - return row.card===card; 1686 - }) 1687 - .sort(function(a,b){ 1688 - return ( 1689 - a.el 1690 - .getBoundingClientRect() 1691 - .top- 1692 - b.el 1693 - .getBoundingClientRect() 1694 - .top 1695 - ); 1696 - }); 1697 - 1698 - return candidates.length 1699 - ?candidates[0] 1700 - :null; 1701 - }); 1702 - 1703 - if( 1704 - !firstHeaders.some(function(row){ 1705 - return !row; 1706 - }) 1707 - ){ 1708 - var targetTop= 1709 - Math.max.apply( 1710 - Math, 1711 - firstHeaders.map(function(row){ 1712 - return ( 1713 - row.el 1714 - .getBoundingClientRect() 1715 - .top- 1716 - row.card 1717 - .getBoundingClientRect() 1718 - .top 1719 - ); 1720 - }) 1721 - ); 1722 - 1723 - firstHeaders.forEach(function(row){ 1724 - var relativeTop= 1725 - row.el 1726 - .getBoundingClientRect() 1727 - .top- 1728 - row.card 1729 - .getBoundingClientRect() 1730 - .top; 1731 - 1732 - var delta= 1733 - targetTop-relativeTop; 1734 - 1735 - if(delta>1){ 1736 - saveStyle( 1737 - row.el, 1738 - originalMargin, 1739 - "margin-top" 1740 - ); 1741 - 1742 - var current= 1743 - num( 1744 - getComputedStyle( 1745 - row.el 1746 - ).marginTop 1747 - ); 1748 - 1749 - row.el.style.setProperty( 1750 - "margin-top", 1751 - ( 1752 - current+delta 1753 - )+"px" 1754 - ); 1755 - 1756 - row.el.setAttribute( 1757 - "data-sn-master-first-row", 1758 - "1" 1759 - ); 1760 - 1761 - managedMargin.add( 1762 - row.el 1763 - ); 1764 - } 1765 - }); 1766 - } 1767 - 1768 - var maxHeight=0; 1769 - 1770 - group.cards.forEach(function(card){ 1771 - maxHeight= 1772 - Math.max( 1773 - maxHeight, 1774 - card 1775 - .getBoundingClientRect() 1776 - .height 1777 - ); 1778 - }); 1779 - 1780 - maxHeight= 1781 - Math.ceil(maxHeight); 1782 - 1783 - group.cards.forEach(function(card){ 1784 - saveStyle( 1785 - card, 1786 - originalHeight, 1787 - "min-height" 1788 - ); 1789 - 1790 - card.style.setProperty( 1791 - "min-height", 1792 - maxHeight+"px" 1793 - ); 1794 - 1795 - card.setAttribute( 1796 - "data-sn-master-equal-height", 1797 - "1" 1798 - ); 1799 - 1800 - managedHeight.add( 1801 - card 1802 - ); 1803 - }); 1804 - }); 1805 - } 1806 - 1807 - /* ======================================================= 1808 - DETAIL GRID EQUAL HEIGHT, DESKTOP ONLY 1809 - ======================================================= */ 1810 - 1811 - function equaliseDetailGrids(){ 1812 - if( 1813 - PAGE_KIND!=="detail"|| 1814 - window.innerWidth<=MOBILE_MAX 1815 - ){ 1816 - return; 1817 - } 1818 - 1819 - var selectors=[ 1820 - ".arsn-grid", 1821 - ".arsn-grid-2", 1822 - ".arsn-grid-3", 1823 - ".dmp-grid", 1824 - ".ido-grid", 1825 - ".pp-grid" 1826 - ]; 1827 - 1828 - selectors.forEach(function(selector){ 1829 - Array.from( 1830 - root.querySelectorAll(selector) 1831 - ).forEach(function(grid){ 1832 - var children= 1833 - Array.from( 1834 - grid.children||[] 1835 - ).filter(visible); 1836 - 1837 - if(children.length<2){ 1838 - return; 1839 - } 1840 - 1841 - var groups=[]; 1842 - 1843 - children.forEach(function(child){ 1844 - var top= 1845 - child 1846 - .getBoundingClientRect() 1847 - .top; 1848 - 1849 - var group=null; 1850 - 1851 - for(var i=0;i<groups.length;i++){ 1852 - if( 1853 - Math.abs( 1854 - groups[i].top-top 1855 - )<=ROW_TOLERANCE 1856 - ){ 1857 - group=groups[i]; 1858 - break; 1859 - } 1860 - } 1861 - 1862 - if(!group){ 1863 - group={ 1864 - top:top, 1865 - items:[] 1866 - }; 1867 - groups.push(group); 1868 - } 1869 - 1870 - group.items.push(child); 1871 - }); 1872 - 1873 - groups.forEach(function(group){ 1874 - if(group.items.length<2){ 1875 - return; 1876 - } 1877 - 1878 - var maxHeight=0; 1879 - 1880 - group.items.forEach(function(item){ 1881 - maxHeight= 1882 - Math.max( 1883 - maxHeight, 1884 - item 1885 - .getBoundingClientRect() 1886 - .height 1887 - ); 1888 - }); 1889 - 1890 - maxHeight= 1891 - Math.ceil(maxHeight); 1892 - 1893 - group.items.forEach(function(item){ 1894 - saveStyle( 1895 - item, 1896 - originalHeight, 1897 - "min-height" 1898 - ); 1899 - 1900 - item.style.setProperty( 1901 - "min-height", 1902 - maxHeight+"px" 1903 - ); 1904 - 1905 - item.setAttribute( 1906 - "data-sn-master-equal-height", 1907 - "1" 1908 - ); 1909 - 1910 - managedHeight.add(item); 1911 - }); 1912 - }); 1913 - }); 1914 - }); 1915 - } 1916 - 1917 - /* ======================================================= 1918 - RUN / RESPONSIVE SCHEDULING 1919 - ======================================================= */ 1920 - 1921 - function run(){ 1922 - if(running)return; 1923 - 1924 - running=true; 1925 - 1926 - try{ 1927 - resetRuntime(); 1928 - applyPlaceholderBadge(); 1929 - propagateDetailAccents(); 1930 - 1931 - var headers= 1932 - applyOverviewPalette(); 1933 - 1934 - makeThreeLineAreaLabels(); 1935 - makeFilledRedOrangeCTAsBorderless(); 1936 - 1937 - if( 1938 - window.innerWidth> 1939 - MOBILE_MAX 1940 - ){ 1941 - alignOverviewCards( 1942 - headers 1943 - ); 1944 - 1945 - equaliseDetailGrids(); 1946 - } 1947 - }finally{ 1948 - running=false; 1949 - } 1950 - } 1951 - 1952 - function onResize(){ 1953 - if(resizeTimer){ 1954 - clearTimeout( 1955 - resizeTimer 1956 - ); 1957 - } 1958 - 1959 - resizeTimer= 1960 - setTimeout( 1961 - function(){ 1962 - resizeTimer=0; 1963 - run(); 1964 - }, 1965 - RESIZE_DEBOUNCE 1966 - ); 1967 - } 1968 - 1969 - async function waitForReady(){ 1970 - if( 1971 - document.readyState!=="complete" 1972 - ){ 1973 - await new Promise(function(resolve){ 1974 - window.addEventListener( 1975 - "load", 1976 - resolve, 1977 - {once:true} 1978 - ); 1979 - }); 1980 - } 1981 - 1982 - if( 1983 - document.fonts&& 1984 - document.fonts.ready 1985 - ){ 1986 - try{ 1987 - await document.fonts.ready; 1988 - }catch(error){} 1989 - } 1990 - 1991 - var images= 1992 - Array.from( 1993 - root.querySelectorAll("img") 1994 - ); 1995 - 1996 - await Promise.all( 1997 - images.map(function(img){ 1998 - if(img.complete){ 1999 - return Promise.resolve(); 2000 - } 2001 - 2002 - return new Promise(function(resolve){ 2003 - var done=function(){ 2004 - resolve(); 2005 - }; 2006 - 2007 - img.addEventListener( 2008 - "load", 2009 - done, 2010 - {once:true} 2011 - ); 2012 - 2013 - img.addEventListener( 2014 - "error", 2015 - done, 2016 - {once:true} 2017 - ); 2018 - }); 2019 - }) 2020 - ); 2021 - 2022 - run(); 2023 - } 2024 - 2025 - window.addEventListener( 2026 - "resize", 2027 - onResize, 2028 - {passive:true} 2029 - ); 2030 - 2031 - waitForReady(); 2032 -})(); 2033 -</script> 2034 - 2035 -<!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_END --> 2036 -{{/html}} 2037 -