Changes for page Identify Your Data & Research Outputs
Last modified by Veronika Kocher on Friday, 04 Sep 2026 14:45
From version 5.7
edited by Veronika Kocher
on Wednesday, 02 Sep 2026 13:13
on Wednesday, 02 Sep 2026 13:13
Change comment:
There is no comment for this version
To version 5.14
edited by Veronika Kocher
on Friday, 04 Sep 2026 14:23
on Friday, 04 Sep 2026 14:23
Change comment:
There is no comment for this version
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -26,7 +26,7 @@ 26 26 <section class="ido-card" style="margin-bottom:18px;overflow:hidden;border-left:6px solid #e94b13;"> 27 27 <div class="ido-hero"><img src="https://xwiki.uni-ak.ac.at/bin/download/Service%20Navigator/Art%20%26%20Research%20Services%20Navigator/WebHome/enable.png" alt="Research materials, documentation and project outputs"></div> 28 28 <div style="padding:18px 21px 20px"> 29 -<div class="ido-eye" style="color:#8a4d36;margin-bottom:5px">E NABLE · IDENTIFY DATA & RESEARCH OUTPUTS</div>29 +<div class="ido-eye" style="color:#8a4d36;margin-bottom:5px">PREPARE · IDENTIFY DATA & RESEARCH OUTPUTS</div> 30 30 <h2 style="font-size:27px;line-height:1.2;margin:0 0 8px;color:#2c2926">Know what your project creates, collects, reuses and needs to keep</h2> 31 31 <p style="margin:0;color:#5e5953;line-height:1.6;max-width:1160px">Before you can plan storage, rights, data protection, documentation, publication or preservation, you need a realistic inventory of the materials and outputs your project will work with. In artistic research this often includes much more than conventional “research data”: source material, physical objects, sketches, recordings, software, process documentation, performances, installations and the records that make them understandable later.</p> 32 32 </div> ... ... @@ -251,6 +251,14 @@ 251 251 252 252 <div class="ido-info" style="margin-bottom:14px"><strong>Need help deciding what belongs in the inventory?</strong> Bring a one-paragraph project description, your planned methods/activities, expected outputs, likely source material and any funder requirements. For funded art/research projects, Support Kunst und Forschung can help connect these elements to the wider project plan.</div> 253 253 254 +<!-- ARSN_TRAINING_WORKSHOPS_INCLUDE_V1_START --> 255 +{{include reference="Service Navigator.Art & Research Services Navigator.Code.TrainingWorkshopsBlock" author="target" /}} 256 +<!-- ARSN_TRAINING_WORKSHOPS_INCLUDE_V1_END --> 257 + 258 +<!-- ARSN_PRACTICAL_RESOURCES_FALLBACK_V1_START --> 259 +{{include reference="Service Navigator.Art & Research Services Navigator.Code.PracticalResourcesFallbackBlock" author="target" /}} 260 +<!-- ARSN_PRACTICAL_RESOURCES_FALLBACK_V1_END --> 261 + 254 254 <!-- ARSN_SEARCH_TERMS_START --> 255 255 <details style="margin-top:24px;padding-top:10px;border-top:1px solid #e3ded6"> 256 256 <summary style="cursor:pointer;color:#6a655e;font-size:13px">Search terms & related topics</summary> ... ... @@ -261,3 +261,1404 @@ 261 261 </div> 262 262 {{/html}} 263 263 272 +{{html clean="false"}} 273 +<!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_START --> 274 + 275 +<style data-sn-service-navigator-master="1"> 276 +/* ========================================================= 277 + MASTER TYPOGRAPHY 278 + ========================================================= */ 279 +#xwikicontent h1, 280 +#xwikicontent h2, 281 +#xwikicontent h3, 282 +#xwikicontent h4, 283 +#xwikicontent h5, 284 +#xwikicontent h6, 285 +#xwikicontent .box-title, 286 +#xwikicontent [role="heading"], 287 +#xwikicontent h1 a, 288 +#xwikicontent h2 a, 289 +#xwikicontent h3 a, 290 +#xwikicontent h4 a, 291 +#xwikicontent h5 a, 292 +#xwikicontent h6 a, 293 +#xwikicontent .box-title a, 294 +#xwikicontent [role="heading"] a{ 295 + text-align:left!important; 296 + text-justify:auto!important; 297 + word-spacing:normal!important; 298 +} 299 + 300 +/* ========================================================= 301 + COMING SOON / IN VORBEREITUNG 302 + ========================================================= */ 303 +.sn-coming-soon-badge{ 304 + display:inline-block; 305 + vertical-align:middle; 306 + margin-left:10px; 307 + padding:4px 8px; 308 + border-radius:14px; 309 + border:1px solid #efd9cc; 310 + background:#fff4ee; 311 + color:#8a4d36; 312 + font-size:11px; 313 + font-weight:700; 314 + letter-spacing:.055em; 315 + line-height:1.2; 316 + white-space:nowrap; 317 +} 318 + 319 +/* ========================================================= 320 + NATIVE / DETAIL CALLOUT GEOMETRY 321 + Preserve existing backgrounds. 322 + ========================================================= */ 323 +#xwikicontent .arsn-info, 324 +#xwikicontent .dmp-info, 325 +#xwikicontent .ido-info, 326 +#xwikicontent .pp-info, 327 +#xwikicontent .infomessage{ 328 + box-sizing:border-box!important; 329 + border-left:4px solid #21b6d7!important; 330 + border-radius:8px; 331 + text-align:left!important; 332 + word-spacing:normal!important; 333 +} 334 + 335 +#xwikicontent .arsn-warn, 336 +#xwikicontent .dmp-warn, 337 +#xwikicontent .ido-warn, 338 +#xwikicontent .pp-warn, 339 +#xwikicontent .warn, 340 +#xwikicontent .warning, 341 +#xwikicontent .warningmessage, 342 +#xwikicontent .errormessage{ 343 + box-sizing:border-box!important; 344 + border-left:4px solid #e94b13!important; 345 + border-radius:8px; 346 + text-align:left!important; 347 + word-spacing:normal!important; 348 +} 349 + 350 +[data-sn-master-equal-height], 351 +[data-sn-master-first-row]{ 352 + box-sizing:border-box; 353 +} 354 + 355 +/* ========================================================= 356 + FULL-WIDTH THREE-LINE NUMBER / TITLE / SUBTITLE BLOCKS 357 + ========================================================= */ 358 +#xwikicontent .arsn-area-label[data-sn-three-line="1"]{ 359 + display:grid!important; 360 + grid-template-columns:minmax(0,1fr)!important; 361 + grid-auto-rows:auto!important; 362 + width:100%!important; 363 + max-width:none!important; 364 + box-sizing:border-box!important; 365 + justify-items:start!important; 366 + align-items:start!important; 367 + gap:2px!important; 368 + text-align:left!important; 369 + text-align-last:left!important; 370 + text-justify:auto!important; 371 + word-spacing:normal!important; 372 + white-space:normal!important; 373 +} 374 +#xwikicontent .arsn-area-label[data-sn-three-line="1"] > .arsn-area-number, 375 +#xwikicontent .arsn-area-label[data-sn-three-line="1"] > .sn-area-label-title, 376 +#xwikicontent .arsn-area-label[data-sn-three-line="1"] > .arsn-area-action{ 377 + display:block!important; 378 + width:100%!important; 379 + margin:0!important; 380 + text-align:left!important; 381 + text-align-last:left!important; 382 + text-justify:auto!important; 383 + word-spacing:normal!important; 384 + white-space:normal!important; 385 +} 386 +</style> 387 + 388 +<script data-sn-service-navigator-master="1"> 389 +(function(){ 390 + "use strict"; 391 + 392 + var PAGE_KIND="detail"; 393 + var PLACEHOLDER=false; 394 + var PLACEHOLDER_LABEL="COMING SOON"; 395 + 396 + var MOBILE_MAX=767; 397 + var ROW_TOLERANCE=6; 398 + var RESIZE_DEBOUNCE=220; 399 + 400 + var root= 401 + document.getElementById("xwikicontent")|| 402 + document.querySelector(".xwiki-rendering-content")|| 403 + document.querySelector("main")|| 404 + document.body; 405 + 406 + if(!root)return; 407 + 408 + var managedHeight=new Set(); 409 + var managedMargin=new Set(); 410 + var originalHeight=new WeakMap(); 411 + var originalMargin=new WeakMap(); 412 + 413 + var resizeTimer=0; 414 + var running=false; 415 + 416 + var THEMES=[ 417 + { 418 + name:"BLUE", 419 + accent:"#21b6d7", 420 + bg:"#eaf7fb", 421 + text:"#315d68", 422 + labels:[ 423 + "HIER STARTEN", 424 + "ENTSCHEIDEN", 425 + "ÜBERPRÜFEN & ANPASSEN", 426 + "START HERE", 427 + "DECIDE", 428 + "REVIEW & ADAPT" 429 + ] 430 + }, 431 + { 432 + name:"RED", 433 + accent:"#e94b13", 434 + bg:"#fff1ec", 435 + text:"#8a4d36", 436 + labels:[ 437 + "PLANEN & ORGANISIEREN", 438 + "ORGANISIEREN & DOKUMENTIEREN", 439 + "PUBLIZIEREN & PRÄSENTIEREN", 440 + "PLAN & ORGANISE", 441 + "PLAN & ORGANIZE", 442 + "ORGANISE & DOCUMENT", 443 + "ORGANIZE & DOCUMENT", 444 + "PUBLISH & PRESENT" 445 + ] 446 + }, 447 + { 448 + name:"YELLOW", 449 + accent:"#f0aa00", 450 + bg:"#fff8e7", 451 + text:"#785b17", 452 + labels:[ 453 + "SCHÜTZEN & KLÄREN", 454 + "STANDARDISIEREN & IDENTIFIZIEREN", 455 + "ÖFFNEN, NACHNUTZEN & AUFFINDBAR MACHEN", 456 + "PROTECT & CLARIFY", 457 + "STANDARDISE & IDENTIFY", 458 + "STANDARDIZE & IDENTIFY", 459 + "OPEN, REUSE & MAKE FINDABLE" 460 + ] 461 + }, 462 + { 463 + name:"GREEN", 464 + accent:"#38b76a", 465 + bg:"#edf9f1", 466 + text:"#3f7451", 467 + labels:[ 468 + "INFRASTRUKTUR EINRICHTEN", 469 + "INFRASTRUKTUR & ZUSAMMENARBEIT EINRICHTEN", 470 + "SPEICHERN & ZUGRIFF STEUERN", 471 + "REPOSITORIUM, ERHALTEN & ÜBERGEBEN", 472 + "SET UP INFRASTRUCTURE", 473 + "SET UP INFRASTRUCTURE & COLLABORATION", 474 + "STORE & CONTROL ACCESS", 475 + "REPOSITORY, PRESERVE & HAND OVER" 476 + ] 477 + } 478 + ]; 479 + 480 + function num(value){ 481 + var n=parseFloat(value); 482 + return Number.isFinite(n)?n:0; 483 + } 484 + 485 + function norm(value){ 486 + return String(value||"") 487 + .replace(/\s+/g," ") 488 + .trim() 489 + .toUpperCase(); 490 + } 491 + 492 + function visible(el){ 493 + if(!el||el.nodeType!==1)return false; 494 + 495 + var style=getComputedStyle(el); 496 + var rect=el.getBoundingClientRect(); 497 + 498 + return ( 499 + style.display!=="none"&& 500 + style.visibility!=="hidden"&& 501 + rect.width>20&& 502 + rect.height>4 503 + ); 504 + } 505 + 506 + function saveStyle(el,map,property){ 507 + if(map.has(el))return; 508 + 509 + map.set(el,{ 510 + value:el.style.getPropertyValue(property), 511 + priority:el.style.getPropertyPriority(property) 512 + }); 513 + } 514 + 515 + function restoreStyle(el,map,property){ 516 + var original=map.get(el); 517 + 518 + if(original&&original.value){ 519 + el.style.setProperty( 520 + property, 521 + original.value, 522 + original.priority||"" 523 + ); 524 + }else{ 525 + el.style.removeProperty(property); 526 + } 527 + } 528 + 529 + function resetRuntime(){ 530 + managedHeight.forEach(function(el){ 531 + restoreStyle( 532 + el, 533 + originalHeight, 534 + "min-height" 535 + ); 536 + el.removeAttribute( 537 + "data-sn-master-equal-height" 538 + ); 539 + }); 540 + 541 + managedMargin.forEach(function(el){ 542 + restoreStyle( 543 + el, 544 + originalMargin, 545 + "margin-top" 546 + ); 547 + el.removeAttribute( 548 + "data-sn-master-first-row" 549 + ); 550 + }); 551 + 552 + managedHeight.clear(); 553 + managedMargin.clear(); 554 + } 555 + 556 + function themeFor(text){ 557 + var value=norm(text); 558 + 559 + for(var i=0;i<THEMES.length;i++){ 560 + for(var j=0;j<THEMES[i].labels.length;j++){ 561 + var label=THEMES[i].labels[j]; 562 + 563 + if( 564 + value===label|| 565 + value.indexOf(label+" ")===0|| 566 + value.indexOf(label+" -")===0|| 567 + value.indexOf(label+" ·")===0 568 + ){ 569 + return THEMES[i]; 570 + } 571 + } 572 + } 573 + 574 + return null; 575 + } 576 + 577 + /* ======================================================= 578 + BORDERLESS FILLED RED/ORANGE CTA BUTTONS 579 + ======================================================= */ 580 + 581 + function colourDistance(a,b){ 582 + return Math.sqrt( 583 + Math.pow(a[0]-b[0],2)+ 584 + Math.pow(a[1]-b[1],2)+ 585 + Math.pow(a[2]-b[2],2) 586 + ); 587 + } 588 + 589 + function makeFilledRedOrangeCTAsBorderless(){ 590 + var RED_ORANGE=[233,75,19]; 591 + 592 + Array.from( 593 + root.querySelectorAll( 594 + 'a,button,[role="button"],input[type="submit"],input[type="button"]' 595 + ) 596 + ).forEach(function(el){ 597 + if(!visible(el))return; 598 + 599 + var style=getComputedStyle(el); 600 + var rgb=parseRGB(style.backgroundColor); 601 + 602 + if(!rgb)return; 603 + 604 + if( 605 + colourDistance( 606 + rgb, 607 + RED_ORANGE 608 + )>55 609 + ){ 610 + return; 611 + } 612 + 613 + var rect=el.getBoundingClientRect(); 614 + 615 + if( 616 + rect.width<80|| 617 + rect.height<24 618 + ){ 619 + return; 620 + } 621 + 622 + el.style.setProperty( 623 + "border", 624 + "none", 625 + "important" 626 + ); 627 + 628 + el.style.setProperty( 629 + "border-left", 630 + "none", 631 + "important" 632 + ); 633 + 634 + el.style.setProperty( 635 + "border-top", 636 + "none", 637 + "important" 638 + ); 639 + 640 + el.style.setProperty( 641 + "border-right", 642 + "none", 643 + "important" 644 + ); 645 + 646 + el.style.setProperty( 647 + "border-bottom", 648 + "none", 649 + "important" 650 + ); 651 + 652 + el.style.setProperty( 653 + "box-shadow", 654 + "none", 655 + "important" 656 + ); 657 + }); 658 + } 659 + 660 + /* ======================================================= 661 + FULL-WIDTH THREE-LINE AREA LABELS 662 + ======================================================= */ 663 + 664 + function compactText(value){ 665 + return String(value||"") 666 + .replace(/\s+/g," ") 667 + .trim(); 668 + } 669 + 670 + function makeThreeLineAreaLabels(){ 671 + Array.from( 672 + root.querySelectorAll( 673 + ".arsn-area-label" 674 + ) 675 + ).forEach(function(label){ 676 + if( 677 + label.getAttribute( 678 + "data-sn-three-line" 679 + )==="1" 680 + ){ 681 + return; 682 + } 683 + 684 + var number= 685 + label.querySelector( 686 + ":scope > .arsn-area-number" 687 + ); 688 + 689 + var action= 690 + label.querySelector( 691 + ":scope > .arsn-area-action" 692 + ); 693 + 694 + if( 695 + !number|| 696 + !action 697 + ){ 698 + return; 699 + } 700 + 701 + var clone= 702 + label.cloneNode(true); 703 + 704 + var cloneNumber= 705 + clone.querySelector( 706 + ":scope > .arsn-area-number" 707 + ); 708 + 709 + var cloneAction= 710 + clone.querySelector( 711 + ":scope > .arsn-area-action" 712 + ); 713 + 714 + if(cloneNumber){ 715 + cloneNumber.remove(); 716 + } 717 + 718 + if(cloneAction){ 719 + cloneAction.remove(); 720 + } 721 + 722 + var titleText= 723 + compactText( 724 + clone.textContent 725 + ); 726 + 727 + if(!titleText){ 728 + return; 729 + } 730 + 731 + var numberNode= 732 + number.cloneNode(true); 733 + 734 + var actionNode= 735 + action.cloneNode(true); 736 + 737 + var titleNode= 738 + document.createElement( 739 + "span" 740 + ); 741 + 742 + titleNode.className= 743 + "sn-area-label-title"; 744 + 745 + titleNode.textContent= 746 + titleText; 747 + 748 + while(label.firstChild){ 749 + label.removeChild( 750 + label.firstChild 751 + ); 752 + } 753 + 754 + label.appendChild( 755 + numberNode 756 + ); 757 + 758 + label.appendChild( 759 + titleNode 760 + ); 761 + 762 + label.appendChild( 763 + actionNode 764 + ); 765 + 766 + label.setAttribute( 767 + "data-sn-three-line", 768 + "1" 769 + ); 770 + 771 + var head= 772 + label.closest( 773 + ".arsn-area-head" 774 + ); 775 + 776 + if(head){ 777 + head.style.setProperty( 778 + "width", 779 + "100%", 780 + "important" 781 + ); 782 + 783 + head.style.setProperty( 784 + "max-width", 785 + "100%", 786 + "important" 787 + ); 788 + 789 + head.style.setProperty( 790 + "box-sizing", 791 + "border-box", 792 + "important" 793 + ); 794 + } 795 + }); 796 + } 797 + 798 + /* ======================================================= 799 + PLACEHOLDER BADGE 800 + ======================================================= */ 801 + 802 + function applyPlaceholderBadge(){ 803 + if(!PLACEHOLDER)return; 804 + 805 + if( 806 + document.querySelector( 807 + ".sn-coming-soon-badge" 808 + ) 809 + ){ 810 + return; 811 + } 812 + 813 + var title= 814 + document.querySelector( 815 + "#document-title" 816 + )|| 817 + document.querySelector( 818 + "h1" 819 + ); 820 + 821 + if(!title)return; 822 + 823 + var badge= 824 + document.createElement( 825 + "span" 826 + ); 827 + 828 + badge.className= 829 + "sn-coming-soon-badge"; 830 + 831 + badge.textContent= 832 + PLACEHOLDER_LABEL; 833 + 834 + badge.setAttribute( 835 + "aria-label", 836 + PLACEHOLDER_LABEL 837 + ); 838 + 839 + title.appendChild( 840 + badge 841 + ); 842 + } 843 + 844 + /* ======================================================= 845 + DETAIL PAGE OWN-ACCENT PROPAGATION 846 + ======================================================= */ 847 + 848 + function parseRGB(value){ 849 + var match=String(value||"").match( 850 + /rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/i 851 + ); 852 + 853 + if(!match)return null; 854 + 855 + return [ 856 + Number(match[1]), 857 + Number(match[2]), 858 + Number(match[3]) 859 + ]; 860 + } 861 + 862 + function distance(a,b){ 863 + return Math.sqrt( 864 + Math.pow(a[0]-b[0],2)+ 865 + Math.pow(a[1]-b[1],2)+ 866 + Math.pow(a[2]-b[2],2) 867 + ); 868 + } 869 + 870 + function paletteMatch(cssColor){ 871 + var rgb=parseRGB(cssColor); 872 + 873 + if(!rgb)return null; 874 + 875 + var palette=[ 876 + {hex:"#21b6d7",rgb:[33,182,215]}, 877 + {hex:"#e94b13",rgb:[233,75,19]}, 878 + {hex:"#f0aa00",rgb:[240,170,0]}, 879 + {hex:"#38b76a",rgb:[56,183,106]} 880 + ]; 881 + 882 + var best=null; 883 + var bestDistance=Infinity; 884 + 885 + palette.forEach(function(item){ 886 + var d=distance(rgb,item.rgb); 887 + 888 + if(d<bestDistance){ 889 + best=item; 890 + bestDistance=d; 891 + } 892 + }); 893 + 894 + return bestDistance<=30 895 + ?best 896 + :null; 897 + } 898 + 899 + function propagateDetailAccents(){ 900 + if(PAGE_KIND!=="detail")return; 901 + 902 + Array.from( 903 + root.querySelectorAll( 904 + ".arsn-call,.dmp-call,.ido-call,.pp-call,"+ 905 + ".arsn-source,.dmp-source,.ido-source,.pp-source" 906 + ) 907 + ).forEach(function(el){ 908 + if(!visible(el))return; 909 + 910 + var style=getComputedStyle(el); 911 + 912 + if( 913 + num(style.borderTopWidth)>=2 914 + ){ 915 + var match= 916 + paletteMatch( 917 + style.borderTopColor 918 + ); 919 + 920 + if(match){ 921 + el.style.setProperty( 922 + "border-left", 923 + "4px solid "+match.hex, 924 + "important" 925 + ); 926 + } 927 + } 928 + }); 929 + 930 + // Warning families: explicit safety override. 931 + Array.from( 932 + root.querySelectorAll( 933 + ".arsn-warn,.dmp-warn,.ido-warn,.pp-warn,"+ 934 + ".warn,.warning,.warningmessage,.errormessage" 935 + ) 936 + ).forEach(function(el){ 937 + if(!visible(el))return; 938 + 939 + el.style.setProperty( 940 + "border-left", 941 + "4px solid #e94b13", 942 + "important" 943 + ); 944 + }); 945 + 946 + // Info families: explicit orientation override. 947 + Array.from( 948 + root.querySelectorAll( 949 + ".arsn-info,.dmp-info,.ido-info,.pp-info,.infomessage" 950 + ) 951 + ).forEach(function(el){ 952 + if(!visible(el))return; 953 + 954 + el.style.setProperty( 955 + "border-left", 956 + "4px solid #21b6d7", 957 + "important" 958 + ); 959 + }); 960 + } 961 + 962 + /* ======================================================= 963 + OVERVIEW SEMANTIC THEME PALETTE 964 + ======================================================= */ 965 + 966 + function smallestThemeHeaders(){ 967 + return Array.from( 968 + root.querySelectorAll( 969 + "div,span,p,strong,h3,h4,h5,h6" 970 + ) 971 + ).filter(function(el){ 972 + if(!visible(el))return false; 973 + if(!themeFor(el.textContent))return false; 974 + 975 + return !Array.from( 976 + el.children||[] 977 + ).some(function(child){ 978 + return !!themeFor( 979 + child.textContent 980 + ); 981 + }); 982 + }); 983 + } 984 + 985 + function findOverviewCard(header){ 986 + var node=header.parentElement; 987 + var candidates=[]; 988 + 989 + while(node&&node!==root){ 990 + var rect=node.getBoundingClientRect(); 991 + var style=getComputedStyle(node); 992 + 993 + var border= 994 + num(style.borderTopWidth)+ 995 + num(style.borderRightWidth)+ 996 + num(style.borderBottomWidth)+ 997 + num(style.borderLeftWidth); 998 + 999 + if( 1000 + rect.width>=220&& 1001 + rect.width<=800&& 1002 + rect.height>=120&& 1003 + border>=1 1004 + ){ 1005 + candidates.push(node); 1006 + } 1007 + 1008 + node=node.parentElement; 1009 + } 1010 + 1011 + if(!candidates.length)return null; 1012 + 1013 + candidates.sort(function(a,b){ 1014 + return ( 1015 + b.getBoundingClientRect().height- 1016 + a.getBoundingClientRect().height 1017 + ); 1018 + }); 1019 + 1020 + return candidates[0]; 1021 + } 1022 + 1023 + function rowCandidates(link,card){ 1024 + var result=[]; 1025 + var cardRect= 1026 + card.getBoundingClientRect(); 1027 + 1028 + var node=link; 1029 + 1030 + while(node&&node!==card){ 1031 + if(visible(node)){ 1032 + var rect= 1033 + node.getBoundingClientRect(); 1034 + 1035 + if( 1036 + rect.height<=105&& 1037 + rect.width>= 1038 + cardRect.width*.50&& 1039 + rect.width<= 1040 + cardRect.width*1.03 1041 + ){ 1042 + result.push(node); 1043 + } 1044 + } 1045 + 1046 + node=node.parentElement; 1047 + } 1048 + 1049 + return result; 1050 + } 1051 + 1052 + function chooseOuterRow( 1053 + candidates, 1054 + link 1055 + ){ 1056 + if(!candidates.length){ 1057 + return link; 1058 + } 1059 + 1060 + var bordered= 1061 + candidates.filter(function(el){ 1062 + return ( 1063 + num( 1064 + getComputedStyle(el) 1065 + .borderLeftWidth 1066 + )>=1 1067 + ); 1068 + }); 1069 + 1070 + var pool= 1071 + bordered.length 1072 + ?bordered 1073 + :candidates; 1074 + 1075 + pool.sort(function(a,b){ 1076 + var ar= 1077 + a.getBoundingClientRect(); 1078 + 1079 + var br= 1080 + b.getBoundingClientRect(); 1081 + 1082 + return ( 1083 + ar.left-br.left|| 1084 + br.width-ar.width 1085 + ); 1086 + }); 1087 + 1088 + return pool[0]||link; 1089 + } 1090 + 1091 + function applyOverviewPalette(){ 1092 + if(PAGE_KIND!=="overview"){ 1093 + return []; 1094 + } 1095 + 1096 + var headers= 1097 + smallestThemeHeaders() 1098 + .map(function(el){ 1099 + return { 1100 + el:el, 1101 + theme: 1102 + themeFor( 1103 + el.textContent 1104 + ), 1105 + card: 1106 + findOverviewCard( 1107 + el 1108 + ) 1109 + }; 1110 + }) 1111 + .filter(function(row){ 1112 + return !!row.card; 1113 + }); 1114 + 1115 + var unique=[]; 1116 + var seenHeaders=new Set(); 1117 + 1118 + headers.forEach(function(row){ 1119 + var key= 1120 + row.theme.name+ 1121 + "|"+ 1122 + Math.round( 1123 + row.card 1124 + .getBoundingClientRect() 1125 + .left 1126 + )+ 1127 + "|"+ 1128 + Math.round( 1129 + row.el 1130 + .getBoundingClientRect() 1131 + .top 1132 + ); 1133 + 1134 + if(!seenHeaders.has(key)){ 1135 + seenHeaders.add(key); 1136 + unique.push(row); 1137 + } 1138 + }); 1139 + 1140 + unique.forEach(function(row){ 1141 + var headerRect= 1142 + row.el 1143 + .getBoundingClientRect(); 1144 + 1145 + row.el.style.setProperty( 1146 + "background", 1147 + row.theme.bg, 1148 + "important" 1149 + ); 1150 + 1151 + row.el.style.setProperty( 1152 + "color", 1153 + row.theme.text, 1154 + "important" 1155 + ); 1156 + 1157 + row.el.style.setProperty( 1158 + "text-align", 1159 + "left", 1160 + "important" 1161 + ); 1162 + 1163 + row.el.style.setProperty( 1164 + "word-spacing", 1165 + "normal", 1166 + "important" 1167 + ); 1168 + 1169 + var later= 1170 + unique 1171 + .filter(function(other){ 1172 + return ( 1173 + other.card===row.card&& 1174 + other.el 1175 + .getBoundingClientRect() 1176 + .top> 1177 + headerRect.top+2 1178 + ); 1179 + }) 1180 + .sort(function(a,b){ 1181 + return ( 1182 + a.el 1183 + .getBoundingClientRect() 1184 + .top- 1185 + b.el 1186 + .getBoundingClientRect() 1187 + .top 1188 + ); 1189 + }); 1190 + 1191 + var stopTop= 1192 + later.length 1193 + ?later[0].el 1194 + .getBoundingClientRect() 1195 + .top 1196 + :Infinity; 1197 + 1198 + Array.from( 1199 + row.card.querySelectorAll("a") 1200 + ).forEach(function(link){ 1201 + if(!visible(link))return; 1202 + 1203 + var rect= 1204 + link.getBoundingClientRect(); 1205 + 1206 + if( 1207 + rect.top<= 1208 + headerRect.bottom-2|| 1209 + rect.top>= 1210 + stopTop-2 1211 + ){ 1212 + return; 1213 + } 1214 + 1215 + var candidates= 1216 + rowCandidates( 1217 + link, 1218 + row.card 1219 + ); 1220 + 1221 + var target= 1222 + chooseOuterRow( 1223 + candidates, 1224 + link 1225 + ); 1226 + 1227 + candidates.forEach(function(el){ 1228 + el.style.setProperty( 1229 + "border-left", 1230 + "0 solid transparent", 1231 + "important" 1232 + ); 1233 + }); 1234 + 1235 + target.style.setProperty( 1236 + "border-left", 1237 + "3px solid "+ 1238 + row.theme.accent, 1239 + "important" 1240 + ); 1241 + 1242 + target.style.setProperty( 1243 + "box-sizing", 1244 + "border-box", 1245 + "important" 1246 + ); 1247 + }); 1248 + }); 1249 + 1250 + return unique; 1251 + } 1252 + 1253 + /* ======================================================= 1254 + OVERVIEW CARD HEIGHT + FIRST THEMATIC ROW 1255 + ======================================================= */ 1256 + 1257 + function alignOverviewCards(headers){ 1258 + if( 1259 + PAGE_KIND!=="overview"|| 1260 + window.innerWidth<=MOBILE_MAX 1261 + ){ 1262 + return; 1263 + } 1264 + 1265 + var cards=[]; 1266 + var seen=new Set(); 1267 + 1268 + headers.forEach(function(row){ 1269 + if(!seen.has(row.card)){ 1270 + seen.add(row.card); 1271 + cards.push(row.card); 1272 + } 1273 + }); 1274 + 1275 + if(cards.length<2){ 1276 + return; 1277 + } 1278 + 1279 + // Group cards by actual top position. 1280 + var groups=[]; 1281 + 1282 + cards.forEach(function(card){ 1283 + var top= 1284 + card.getBoundingClientRect().top; 1285 + 1286 + var group=null; 1287 + 1288 + for(var i=0;i<groups.length;i++){ 1289 + if( 1290 + Math.abs( 1291 + groups[i].top-top 1292 + )<=ROW_TOLERANCE 1293 + ){ 1294 + group=groups[i]; 1295 + break; 1296 + } 1297 + } 1298 + 1299 + if(!group){ 1300 + group={ 1301 + top:top, 1302 + cards:[] 1303 + }; 1304 + groups.push(group); 1305 + } 1306 + 1307 + group.cards.push(card); 1308 + }); 1309 + 1310 + groups.forEach(function(group){ 1311 + if(group.cards.length<2){ 1312 + return; 1313 + } 1314 + 1315 + var firstHeaders= 1316 + group.cards.map(function(card){ 1317 + var candidates= 1318 + headers 1319 + .filter(function(row){ 1320 + return row.card===card; 1321 + }) 1322 + .sort(function(a,b){ 1323 + return ( 1324 + a.el 1325 + .getBoundingClientRect() 1326 + .top- 1327 + b.el 1328 + .getBoundingClientRect() 1329 + .top 1330 + ); 1331 + }); 1332 + 1333 + return candidates.length 1334 + ?candidates[0] 1335 + :null; 1336 + }); 1337 + 1338 + if( 1339 + !firstHeaders.some(function(row){ 1340 + return !row; 1341 + }) 1342 + ){ 1343 + var targetTop= 1344 + Math.max.apply( 1345 + Math, 1346 + firstHeaders.map(function(row){ 1347 + return ( 1348 + row.el 1349 + .getBoundingClientRect() 1350 + .top- 1351 + row.card 1352 + .getBoundingClientRect() 1353 + .top 1354 + ); 1355 + }) 1356 + ); 1357 + 1358 + firstHeaders.forEach(function(row){ 1359 + var relativeTop= 1360 + row.el 1361 + .getBoundingClientRect() 1362 + .top- 1363 + row.card 1364 + .getBoundingClientRect() 1365 + .top; 1366 + 1367 + var delta= 1368 + targetTop-relativeTop; 1369 + 1370 + if(delta>1){ 1371 + saveStyle( 1372 + row.el, 1373 + originalMargin, 1374 + "margin-top" 1375 + ); 1376 + 1377 + var current= 1378 + num( 1379 + getComputedStyle( 1380 + row.el 1381 + ).marginTop 1382 + ); 1383 + 1384 + row.el.style.setProperty( 1385 + "margin-top", 1386 + ( 1387 + current+delta 1388 + )+"px" 1389 + ); 1390 + 1391 + row.el.setAttribute( 1392 + "data-sn-master-first-row", 1393 + "1" 1394 + ); 1395 + 1396 + managedMargin.add( 1397 + row.el 1398 + ); 1399 + } 1400 + }); 1401 + } 1402 + 1403 + var maxHeight=0; 1404 + 1405 + group.cards.forEach(function(card){ 1406 + maxHeight= 1407 + Math.max( 1408 + maxHeight, 1409 + card 1410 + .getBoundingClientRect() 1411 + .height 1412 + ); 1413 + }); 1414 + 1415 + maxHeight= 1416 + Math.ceil(maxHeight); 1417 + 1418 + group.cards.forEach(function(card){ 1419 + saveStyle( 1420 + card, 1421 + originalHeight, 1422 + "min-height" 1423 + ); 1424 + 1425 + card.style.setProperty( 1426 + "min-height", 1427 + maxHeight+"px" 1428 + ); 1429 + 1430 + card.setAttribute( 1431 + "data-sn-master-equal-height", 1432 + "1" 1433 + ); 1434 + 1435 + managedHeight.add( 1436 + card 1437 + ); 1438 + }); 1439 + }); 1440 + } 1441 + 1442 + /* ======================================================= 1443 + DETAIL GRID EQUAL HEIGHT, DESKTOP ONLY 1444 + ======================================================= */ 1445 + 1446 + function equaliseDetailGrids(){ 1447 + if( 1448 + PAGE_KIND!=="detail"|| 1449 + window.innerWidth<=MOBILE_MAX 1450 + ){ 1451 + return; 1452 + } 1453 + 1454 + var selectors=[ 1455 + ".arsn-grid", 1456 + ".arsn-grid-2", 1457 + ".arsn-grid-3", 1458 + ".dmp-grid", 1459 + ".ido-grid", 1460 + ".pp-grid" 1461 + ]; 1462 + 1463 + selectors.forEach(function(selector){ 1464 + Array.from( 1465 + root.querySelectorAll(selector) 1466 + ).forEach(function(grid){ 1467 + var children= 1468 + Array.from( 1469 + grid.children||[] 1470 + ).filter(visible); 1471 + 1472 + if(children.length<2){ 1473 + return; 1474 + } 1475 + 1476 + var groups=[]; 1477 + 1478 + children.forEach(function(child){ 1479 + var top= 1480 + child 1481 + .getBoundingClientRect() 1482 + .top; 1483 + 1484 + var group=null; 1485 + 1486 + for(var i=0;i<groups.length;i++){ 1487 + if( 1488 + Math.abs( 1489 + groups[i].top-top 1490 + )<=ROW_TOLERANCE 1491 + ){ 1492 + group=groups[i]; 1493 + break; 1494 + } 1495 + } 1496 + 1497 + if(!group){ 1498 + group={ 1499 + top:top, 1500 + items:[] 1501 + }; 1502 + groups.push(group); 1503 + } 1504 + 1505 + group.items.push(child); 1506 + }); 1507 + 1508 + groups.forEach(function(group){ 1509 + if(group.items.length<2){ 1510 + return; 1511 + } 1512 + 1513 + var maxHeight=0; 1514 + 1515 + group.items.forEach(function(item){ 1516 + maxHeight= 1517 + Math.max( 1518 + maxHeight, 1519 + item 1520 + .getBoundingClientRect() 1521 + .height 1522 + ); 1523 + }); 1524 + 1525 + maxHeight= 1526 + Math.ceil(maxHeight); 1527 + 1528 + group.items.forEach(function(item){ 1529 + saveStyle( 1530 + item, 1531 + originalHeight, 1532 + "min-height" 1533 + ); 1534 + 1535 + item.style.setProperty( 1536 + "min-height", 1537 + maxHeight+"px" 1538 + ); 1539 + 1540 + item.setAttribute( 1541 + "data-sn-master-equal-height", 1542 + "1" 1543 + ); 1544 + 1545 + managedHeight.add(item); 1546 + }); 1547 + }); 1548 + }); 1549 + }); 1550 + } 1551 + 1552 + /* ======================================================= 1553 + RUN / RESPONSIVE SCHEDULING 1554 + ======================================================= */ 1555 + 1556 + function run(){ 1557 + if(running)return; 1558 + 1559 + running=true; 1560 + 1561 + try{ 1562 + resetRuntime(); 1563 + applyPlaceholderBadge(); 1564 + propagateDetailAccents(); 1565 + 1566 + var headers= 1567 + applyOverviewPalette(); 1568 + 1569 + makeThreeLineAreaLabels(); 1570 + makeFilledRedOrangeCTAsBorderless(); 1571 + 1572 + if( 1573 + window.innerWidth> 1574 + MOBILE_MAX 1575 + ){ 1576 + alignOverviewCards( 1577 + headers 1578 + ); 1579 + 1580 + equaliseDetailGrids(); 1581 + } 1582 + }finally{ 1583 + running=false; 1584 + } 1585 + } 1586 + 1587 + function onResize(){ 1588 + if(resizeTimer){ 1589 + clearTimeout( 1590 + resizeTimer 1591 + ); 1592 + } 1593 + 1594 + resizeTimer= 1595 + setTimeout( 1596 + function(){ 1597 + resizeTimer=0; 1598 + run(); 1599 + }, 1600 + RESIZE_DEBOUNCE 1601 + ); 1602 + } 1603 + 1604 + async function waitForReady(){ 1605 + if( 1606 + document.readyState!=="complete" 1607 + ){ 1608 + await new Promise(function(resolve){ 1609 + window.addEventListener( 1610 + "load", 1611 + resolve, 1612 + {once:true} 1613 + ); 1614 + }); 1615 + } 1616 + 1617 + if( 1618 + document.fonts&& 1619 + document.fonts.ready 1620 + ){ 1621 + try{ 1622 + await document.fonts.ready; 1623 + }catch(error){} 1624 + } 1625 + 1626 + var images= 1627 + Array.from( 1628 + root.querySelectorAll("img") 1629 + ); 1630 + 1631 + await Promise.all( 1632 + images.map(function(img){ 1633 + if(img.complete){ 1634 + return Promise.resolve(); 1635 + } 1636 + 1637 + return new Promise(function(resolve){ 1638 + var done=function(){ 1639 + resolve(); 1640 + }; 1641 + 1642 + img.addEventListener( 1643 + "load", 1644 + done, 1645 + {once:true} 1646 + ); 1647 + 1648 + img.addEventListener( 1649 + "error", 1650 + done, 1651 + {once:true} 1652 + ); 1653 + }); 1654 + }) 1655 + ); 1656 + 1657 + run(); 1658 + } 1659 + 1660 + window.addEventListener( 1661 + "resize", 1662 + onResize, 1663 + {passive:true} 1664 + ); 1665 + 1666 + waitForReady(); 1667 +})(); 1668 +</script> 1669 + 1670 +<!-- SN_SERVICE_NAVIGATOR_MASTER_STYLE_END --> 1671 +{{/html}} 1672 +