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