diff --git a/.github/workflows/build_preview.yaml b/.github/workflows/build_preview.yaml index 6de5fa17..0a373c72 100644 --- a/.github/workflows/build_preview.yaml +++ b/.github/workflows/build_preview.yaml @@ -20,10 +20,13 @@ jobs: submodules: true fetch-depth: 0 - - name: Update system libs - run: | - sudo apt-get update - sudo apt-get install -y libcurl4-openssl-dev --fix-missing + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: Install theme dependencies + run: npm install --prefix themes/capro-tw - name: Set env parameters run: | diff --git a/.github/workflows/build_production.yaml b/.github/workflows/build_production.yaml index cc274fe0..6d3ebf97 100644 --- a/.github/workflows/build_production.yaml +++ b/.github/workflows/build_production.yaml @@ -5,8 +5,6 @@ on: push: branches: - main - schedule: - - cron: '1 10 * * SAT' concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -32,10 +30,13 @@ jobs: hugo-version: ${{ env.hugovr }} extended: true - - name: Update system libs - run: | - sudo apt-get update - sudo apt-get install -y libcurl4-openssl-dev --fix-missing + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: Install theme dependencies + run: npm install --prefix themes/capro-tw - name: Build 🔧 env: diff --git a/.github/workflows/retrieve_author_pubs.yaml b/.github/workflows/retrieve_author_pubs.yaml deleted file mode 100644 index 8614fe54..00000000 --- a/.github/workflows/retrieve_author_pubs.yaml +++ /dev/null @@ -1,37 +0,0 @@ -name: Get author data - -on: - workflow_dispatch: - pull_request: - branches: - - main - schedule: - - cron: '0 10 * * SAT' - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - deploy: - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@v4 - - - run: | - sudo apt-get update - sudo apt-get install -y libcurl4-openssl-dev --fix-missing - - - uses: r-lib/actions/setup-r@v2 - - uses: r-lib/actions/setup-renv@v2 - - - name: Get publications - run: Rscript scripts/get_pubs.R - - - name: Commit results - run: | - git config --local user.email "actions@github.com" - git config --local user.name "GitHub Actions" - git commit README.md README-files/ \ - -m 'Re-build README.Rmd' || echo "No changes to commit" - git push origin || echo "No changes to commit" diff --git a/.gitignore b/.gitignore index 2927fe12..e8aa9b3a 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,6 @@ renv/staged/ resources/ public/ .hugo_build.lock + +# Node +node_modules/ diff --git a/config/_default/hugo.yaml b/config/_default/hugo.yaml index a1aad470..3abda878 100644 --- a/config/_default/hugo.yaml +++ b/config/_default/hugo.yaml @@ -1,6 +1,6 @@ baseURL: . title: CAPRO -theme: capro-hugo +theme: capro-tw pagination.pagerSize: '6' summaryLength: '15' enableGitInfo: true diff --git a/config/_default/languages/langauges.no.yaml b/config/_default/languages/languages.no.yaml similarity index 99% rename from config/_default/languages/langauges.no.yaml rename to config/_default/languages/languages.no.yaml index f68acebb..a32c66c1 100644 --- a/config/_default/languages/langauges.no.yaml +++ b/config/_default/languages/languages.no.yaml @@ -25,4 +25,3 @@ params: Harald Schjelderups hus, Forskningsveien 3A, 0373 Oslo - diff --git a/content/team/am_mowinckel/index.en.md b/content/team/am_mowinckel/index.en.md index 20e5b538..4d7d04ce 100644 --- a/content/team/am_mowinckel/index.en.md +++ b/content/team/am_mowinckel/index.en.md @@ -13,7 +13,6 @@ social : # themify icon pack : https://themify.me/themify-icons or fontawesome link: "https://fosstodon.org/@Drmowinckels" - icon : fa-brands fa-twitter link : "https://twitter.com/DrMowinckels" -gscholar_id: "7NkxgWQAAAAJ" --- With a PhD in psychology, Mo transitioned into research software and development as she saw technical solutions could aid fellow scientists in driving their projects forwards. diff --git a/content/team/ik_amlien/index.en.md b/content/team/ik_amlien/index.en.md index 610af548..7e1069fc 100644 --- a/content/team/ik_amlien/index.en.md +++ b/content/team/ik_amlien/index.en.md @@ -5,7 +5,6 @@ designation : ["Data Engineer", "Cloud", social : - icon : "fa-brands fa-orcid" link : "https://orcid.org/0000-0002-8508-9088" -gscholar_id: "cwQrekcAAAAJ" --- Tech background and a PhD in psychology /neuroscience. diff --git a/content/team/jla_warren/index.no.md b/content/team/jla_warren/index.no.md index 3972ae44..1bbc6b5b 100644 --- a/content/team/jla_warren/index.no.md +++ b/content/team/jla_warren/index.no.md @@ -11,7 +11,6 @@ social : # themify icon pack : https://themify.me/themify-icons or fontawesome ( link : "https://github.com/jlawarren" - icon: "fa-brands fa-orcid" link: "https://orcid.org/0000-0002-3638-9957" -gscholar_id: "LRCb81EAAAAJ" #google scholar id, for publiations list --- José Luis har en mangfoldig bakgrunn innen ingeniørfag (BSc), anvendt fysikk (MSc) og evolusjonsbiologi (PhD). Han liker å skape og implementere avanserte verktøy som hjelper til med å forstå komplekse mønstre innen biologi og nevrovitenskap. \ No newline at end of file diff --git a/content/team/mh_sneve/index.en.md b/content/team/mh_sneve/index.en.md index bee2a312..a669ddb7 100644 --- a/content/team/mh_sneve/index.en.md +++ b/content/team/mh_sneve/index.en.md @@ -4,7 +4,6 @@ designation : ["fMRI analyses", "HPC"] social : - icon : "fa-brands fa-orcid" link : "https://orcid.org/0000-0001-7644-7915" -gscholar_id: "G5SQqJ8AAAAJ" --- Dr. Markus is highly skilled, holding a PhD in psychology. He is a dedicated researcher who consistently stays at the forefront of the field through his passion for exploring and discovering new advancements. diff --git a/data/team/pubs/am_mowinckel.json b/data/team/pubs/am_mowinckel.json deleted file mode 100644 index d3f2c59f..00000000 --- a/data/team/pubs/am_mowinckel.json +++ /dev/null @@ -1,446 +0,0 @@ -[ - { - "year": 2025, - "author": "D Vidal-Piñeiro, Ø Sørensen, M Strømstad, IK Amlien, M Anderson & ...", - "title": "Reliability of structural brain change in cognitively healthy adult samples", - "journal": "Imaging Neuroscience 3, imag_a_00547", - "pubid": "vV6vV6tmYwMC" - }, - { - "year": 2025, - "author": "AM Fjell, O Røgeberg, Ø Sørensen, IK Amlien, D Bartrés-Faz & ...", - "title": "Reevaluating the role of education in cognitive decline and brain aging: Insights from large-scale longitudinal cohorts across 33 countries", - "journal": "medRxiv ", - "pubid": "ldfaerwXgEUC" - }, - { - "year": 2025, - "author": "AM Fjell, O Rogeberg, Ø Sørensen, IK Amlien, D Bartrés-Faz & ...", - "title": "Reevaluating the role of education on cognitive decline and brain aging in longitudinal cohorts across 33 Western countries", - "journal": "Nature Medicine 1-10", - "pubid": "3s1wT3WcHBgC" - }, - { - "year": 2025, - "author": "D Vidal-Piñeiro, Ø Sørensen, M Strømstrad, IK Amlien, W Baaré & ...", - "title": "Vulnerability to memory decline in aging–a mega-analysis of structural brain change", - "journal": "bioRxiv 2025.03. 27.642988", - "pubid": "SeFeTyx0c_EC" - }, - { - "year": 2025, - "author": "AM Fjell, MH Sneve, IK Amlien, H Grydeland, AM Mowinckel & ...", - "title": "Stable hippocampal correlates of high episodic memory function across adulthood", - "journal": "Scientific Reports 15 (1), 8816", - "pubid": "HoB7MX3m0LUC" - }, - { - "year": 2025, - "author": "KB Walhovd, ACS Bråthen, K Overbye, J Kransberg, Ø Sørensen & ...", - "title": "How and when can environmental influences change cerebral cortex? An experimental training study of twins with birth weight differences", - "journal": "bioRxiv 2025.03. 06.641380", - "pubid": "pqnbT2bcN3wC" - }, - { - "year": 2024, - "author": "KB Walhovd, SK Krogsrud, IK Amlien et al.", - "title": "Fetal influence on the human brain through the lifespan", - "journal": "Elife 12, RP86812", - "pubid": "NMxIlDl6LWMC" - }, - { - "year": 2024, - "author": "JM Roe, D Vidal-Piñeiro, Ø Sørensen, H Grydeland, EH Leonardsen & ...", - "title": "Brain change trajectories in healthy adults correlate with Alzheimer’s related genetic variation and memory decline across life", - "journal": "Nature Communications 15 (1), 10651", - "pubid": "70eg2SAEIzsC" - }, - { - "year": 2024, - "author": "AM Fjell, MH Sneve, IK Amlien, H Grydeland, AM Mowinckel & ...", - "title": "What underlies exceptional memory function in older age? No evidence for aging-specific relationships to hippocampal atrophy and retrieval activity", - "journal": "bioRxiv 2024.04. 12.589183", - "pubid": "lSLTfruPkqcC" - }, - { - "year": 2024, - "author": "AM Fjell, MH Sneve, IK Amlien, H Grydeland, AM Mowinckel & ...", - "title": "What underlies high episodic memory function in older age? No evidence for aging-specific relationships to hippocampal atrophy and retrieval activity", - "journal": "", - "pubid": "2P1L_qKh6hAC" - }, - { - "year": 2023, - "author": "AM Fjell, Ø Sørensen, Y Wang et al.", - "title": "No phenotypic or genotypic evidence for a link between sleep duration and brain atrophy", - "journal": "Nature human behaviour 7 (11), 2008-2022", - "pubid": "O3NaXMp0MMsC" - }, - { - "year": 2023, - "author": "L Raud, MH Sneve, D Vidal-Piñeiro et al.", - "title": "Hippocampal-cortical functional connectivity during memory encoding and retrieval", - "journal": "NeuroImage 279, 120309", - "pubid": "k_IJM867U9cC" - }, - { - "year": 2023, - "author": "JM Roe, D Vidal-Piñeiro, Ø Sørensen, H Grydeland, EH Leonardsen & ...", - "title": "Accelerated brain change in healthy adults is associated with genetic risk for Alzheimer’s disease and uncovers adult lifespan memory decline", - "journal": "bioRxiv 2023.10. 09.559446", - "pubid": "ns9cj8rnVeAC" - }, - { - "year": 2023, - "author": "D Vidal‐Piñeiro, E Capogna, K Blennow, N Halaas, AV Idland & ...", - "title": "CSF neurodegeneration biomarkers predict MTL atrophy over time in cognitively healthy older adults", - "journal": "Alzheimer's & Dementia 19, e063166", - "pubid": "JV2RwH3_ST0C" - }, - { - "year": 2022, - "author": "KB Walhovd, AM Fjell, Y Wang, IK Amlien, AM Mowinckel & ...", - "title": "Education and income show heterogeneous relationships to lifespan brain and cognitive differences across European and US cohorts", - "journal": "Cerebral cortex 32 (4), 839-854", - "pubid": "dhFuZR0502QC" - }, - { - "year": 2022, - "author": "I Budin-Ljøsne, AM Mowinckel, BB Friedman, KP Ebmeier, CA Drevon & ...", - "title": "Public perceptions of brain health: an international, online cross-sectional survey", - "journal": "BMJ open 12 (4), e057999", - "pubid": "4JMBOYKVnBMC" - }, - { - "year": 2022, - "author": "KB Walhovd, L Nyberg, U Lindenberger et al.", - "title": "Brain aging differs with cognitive ability regardless of education", - "journal": "Scientific reports 12 (1), 13886", - "pubid": "R3hNpaxXUhUC" - }, - { - "year": 2022, - "author": "ACS Bråthen, Ø Sørensen, AMG De Lange, AM Mowinckel, AM Fjell & ...", - "title": "Cognitive and hippocampal changes weeks and years after memory training", - "journal": "Scientific reports 12 (1), 7877", - "pubid": "iH-uZ7U-co4C" - }, - { - "year": 2022, - "author": "RB Carver, NAG Fredheim, AM Mowinckel, KP Ebmeier, BB Friedman & ...", - "title": "People's interest in brain health testing: findings from an international, online cross-sectional survey", - "journal": "Frontiers in Public Health 10, 998302", - "pubid": "blknAaTinKkC" - }, - { - "year": 2022, - "author": "D Vidal-Pineiro, Ø Sørensen, K Blennow, E Capogna, NB Halaas & ...", - "title": "Relationship between cerebrospinal fluid neurodegeneration biomarkers and temporal brain atrophy in cognitively healthy older adults", - "journal": "Neurobiology of Aging 116, 80-91", - "pubid": "j3f4tGmQtD8C" - }, - { - "year": 2022, - "author": "J Binnewies, L Nawijn, AM Brandmaier, WFC Baaré, D Bartrés-Faz & ...", - "title": "Associations of depression and regional brain structure across the adult lifespan: Pooled analyses of six population-based and two clinical cohort studies in the European …", - "journal": "NeuroImage: Clinical 36, 103180", - "pubid": "maZDTaKrznsC" - }, - { - "year": 2022, - "author": "JM Roe, D Vidal-Piñeiro, Ø Sørensen, AM Brandmaier, S Düzel & ...", - "title": "Author Correction: Asymmetric thinning of the cerebral cortex across the adult lifespan is accelerated in Alzheimer’s disease", - "journal": "Nature communications 13, 834", - "pubid": "TQgYirikUcIC" - }, - { - "year": 2022, - "author": "C Solé-Padullés, D Macià, M Andersson et al.", - "title": "No association between loneliness, episodic memory and hippocampal volume change in young and healthy older adults: a Longitudinal European Multicenter Study", - "journal": "Frontiers in Aging Neuroscience 14, 795764", - "pubid": "hFOr9nPyWt4C" - }, - { - "year": 2022, - "author": "AM Fjell, Ø Sørensen, Y Wang et al.", - "title": "Sleep duration and brain structure–phenotypic associations and genotypic covariance", - "journal": "bioRxiv 2022.02. 15.480501", - "pubid": "e5wmG9Sq2KIC" - }, - { - "year": 2022, - "author": "D Vidal-Pineiro, Y Wang, SK Krogsrud, IK Amlien, WFC Baaré & ...", - "title": "Correction: Individual variations in ‘Brain Age’relate to early-life factors more than to longitudinal brain change", - "journal": "Elife 11, e79475", - "pubid": "r0BpntZqJG4C" - }, - { - "year": 2022, - "author": "D Vidal-Pineiro, Y Wang, SK Krogsrud, IK Amlien, WFC Baare & ...", - "title": "Individual variations in'Brain Age'relate to early-life factors more than to longitudinal brain change (vol 10, e69995, 2021)", - "journal": "ELIFE 11", - "pubid": "M05iB0D1s5AC" - }, - { - "year": 2021, - "author": "D Vidal-Pineiro, Y Wang, SK Krogsrud, IK Amlien, WFC Baaré & ...", - "title": "Individual variations in ‘brain age’relate to early-life factors more than to longitudinal brain change", - "journal": "elife 10, e69995", - "pubid": "IWHjjKOFINEC" - }, - { - "year": 2021, - "author": "JM Roe, D Vidal-Piñeiro, Ø Sørensen, AM Brandmaier, S Düzel & ...", - "title": "Asymmetric thinning of the cerebral cortex across the adult lifespan is accelerated in Alzheimer’s disease", - "journal": "Nature communications 12 (1), 721", - "pubid": "aqlVkmm33-oC" - }, - { - "year": 2021, - "author": "AM Fjell, Ø Sørensen, IK Amlien, D Bartrés-Faz, AM Brandmaier & ...", - "title": "Poor self-reported sleep is related to regional cortical thinning in aging but not memory decline—results from the Lifebrain Consortium", - "journal": "Cerebral Cortex 31 (4), 1953-1969", - "pubid": "QIV2ME_5wuYC" - }, - { - "year": 2021, - "author": "Ø Sørensen, AM Brandmaier, D Macià et al.", - "title": "Meta-analysis of generalized additive models in neuroimaging studies", - "journal": "NeuroImage 224, 117416", - "pubid": "ULOm3_A8WrAC" - }, - { - "year": 2021, - "author": "SK Krogsrud, AM Mowinckel, D Sederevicius, D Vidal-Piñeiro, IK Amlien & ...", - "title": "Relationships between apparent cortical thickness and working memory across the lifespan-effects of genetics and socioeconomic status", - "journal": "Developmental cognitive neuroscience 51, 100997", - "pubid": "-f6ydRqryjwC" - }, - { - "year": 2021, - "author": "AM Fjell, H Grydeland, Y Wang et al.", - "title": "The genetic organization of longitudinal subcortical volumetric change is stable throughout the lifespan", - "journal": "elife 10, e66466", - "pubid": "M3ejUd6NZC8C" - }, - { - "year": 2021, - "author": "D Vidal-Piñeiro, MH Sneve, IK Amlien, H Grydeland, AM Mowinckel & ...", - "title": "The functional foundations of episodic memory remain stable throughout the lifespan", - "journal": "Cerebral cortex 31 (4), 2098-2110", - "pubid": "Zph67rFs4hoC" - }, - { - "year": 2021, - "author": "L Vaqué‐Alcázar, MR Cabello‐Toscano, T Gorbach, K Abellaneda‐Pérez & ...", - "title": "Decision‐tree–testing cognition‐MRI associations to define and differentiate cognitive reserve and brain maintenance", - "journal": "Alzheimer's & Dementia 17, e056074", - "pubid": "HDshCWvjkbEC" - }, - { - "year": 2021, - "author": "AM Mowinckel, B Friedman, K Ebmeier et al.", - "title": "What is brain health? Perceptions of 27,590 respondents to the Lifebrain Global Brain Health Survey", - "journal": "", - "pubid": "bEWYMUwI8FkC" - }, - { - "year": 2021, - "author": "JM Roe, D Vidal-Piñeiro, Ø Sørensen, AM Brandmaier, S Düzel & ...", - "title": "Asymmetric thinning of the cerebral cortex across the adult lifespan is accelerated in Alzheimer’s", - "journal": "", - "pubid": "ZeXyd9-uunAC" - }, - { - "year": 2020, - "author": "AM Mowinckel & D Vidal-Piñeiro", - "title": "Visualization of Brain Statistics With R Packages ggseg and ggseg3d", - "journal": "Advances in Methods and Practices in Psychological Science 3 (4), 466-483", - "pubid": "KlAtU1dfN6UC" - }, - { - "year": 2020, - "author": "D Vidal-Pineiro, N Parker, J Shin et al.", - "title": "Cellular correlates of cortical thinning throughout the lifespan", - "journal": "Scientific reports 10 (1), 21803", - "pubid": "5nxA0vEk-isC" - }, - { - "year": 2020, - "author": "AM Fjell, Ø Sørensen, IK Amlien et al.", - "title": "Self-reported sleep relates to hippocampal atrophy across the adult lifespan: results from the Lifebrain consortium", - "journal": "Sleep 43 (5), zsz280", - "pubid": "3fE2CSJIrl8C" - }, - { - "year": 2020, - "author": "VM Danielsen, D Vidal-Piñeiro, AM Mowinckel, D Sederevicius, AM Fjell & ...", - "title": "Lifespan trajectories of relative corpus callosum thickness: regional differences and cognitive relevance", - "journal": "Cortex 130, 127-141", - "pubid": "_kc_bZDykSQC" - }, - { - "year": 2020, - "author": "KB Walhovd, AM Fjell, Ø Sørensen, AM Mowinckel, CS Reinbold & ...", - "title": "Genetic risk for Alzheimer disease predicts hippocampal volume through the human lifespan", - "journal": "Neurology: Genetics 6 (5), e506", - "pubid": "4DMP91E08xMC" - }, - { - "year": 2020, - "author": "T Gorbach, S Pudas, D Bartrés‐Faz, AM Brandmaier, S Düzel & ...", - "title": "Longitudinal association between hippocampus atrophy and episodic‐memory decline in non‐demented APOE ε4 carriers", - "journal": "Alzheimer's & Dementia: Diagnosis, Assessment & Disease Monitoring 12 (1 …", - "pubid": "Wp0gIr-vW9MC" - }, - { - "year": 2020, - "author": "AM Mowinckel & D Vidal-Piñeiro", - "title": "Visualization of brain statistics with R packages ggseg and ggseg3d. Advances in Methods and Practices in Psychological Science, 3 (4), 466–483", - "journal": "", - "pubid": "J_g5lzvAfSwC" - }, - { - "year": 2020, - "author": "I Budin-Ljøsne, BB Friedman, S Suri, C Solé-Padullés, S Düzel & ...", - "title": "The global brain health survey: development of a multi-language survey of public views on brain health", - "journal": "Frontiers in public health 8, 387", - "pubid": "9ZlFYXVOiuMC" - }, - { - "year": 2020, - "author": "KB Walhovd, ACS Bråthen, MS Panizzon, AM Mowinckel, Ø Sørensen & ...", - "title": "Within-session verbal learning slope is predictive of lifespan delayed recall, hippocampal volume, and memory training benefit, and is heritable", - "journal": "Scientific Reports 10 (1), 21158", - "pubid": "7PzlFSSx8tAC" - }, - { - "year": 2020, - "author": "AM Fjell, Ø Sørensen, IK Amlien, D Bartrés-Faz, AM Brandmaier & ...", - "title": "Self-reported sleep problems are related to cortical thinning in aging but not memory decline and amyloid-β accumulation–results from the Lifebrain consortium", - "journal": "bioRxiv 2020.04. 28.065474", - "pubid": "4TOpqqG69KYC" - }, - { - "year": 2019, - "author": "D Vidal-Piñeiro, MH Sneve, LH Nyberg, AM Mowinckel, D Sederevicius & ...", - "title": "Maintained frontal activity underlies high memory function over 8 years in aging", - "journal": "Cerebral cortex 29 (7), 3111-3123", - "pubid": "UebtZRa9Y70C" - }, - { - "year": 2019, - "author": "AM Fjell, CH Chen, D Sederevicius, MH Sneve, H Grydeland & ...", - "title": "Continuity and discontinuity in human cortical development and change from embryonic stages to old age", - "journal": "Cerebral Cortex 29 (9), 3879-3890", - "pubid": "hqOjcs7Dif8C" - }, - { - "year": 2019, - "author": "AM Fjell, MH Sneve, D Sederevicius, Ø Sørensen, SK Krogsrud & ...", - "title": "Volumetric and microstructural regional changes of the hippocampus underlying development of recall performance after extended retention intervals", - "journal": "Developmental cognitive neuroscience 40, 100723", - "pubid": "kNdYIx-mwKoC" - }, - { - "year": 2019, - "author": "AM Mowinckel & D Vidal-Piñeiro", - "title": "Visualisation of brain statistics with R-packages ggseg and ggseg3d. arXiv", - "journal": "arXiv preprint arXiv: :1912.08200", - "pubid": "TFP_iSt0sucC" - }, - { - "year": 2019, - "author": "KB Walhovd, AM Fjell, Ø Sørensen, AM Mowinckel, CS Reinbold & ...", - "title": "Genetic risk for Alzheimer’s disease predicts hippocampal volume through the lifespan", - "journal": "bioRxiv 711689", - "pubid": "MXK_kJrjxJIC" - }, - { - "year": 2019, - "author": "AM Fjell, MH Sneve, D Sederevicius, Ø Sørensen, SK Krogsrud & ...", - "title": "Volumetric and microstructural regional changes of the hippocampus underlying development of extended delay long-term memory", - "journal": "bioRxiv 595827", - "pubid": "8k81kl-MbHgC" - }, - { - "year": 2018, - "author": "KB Walhovd, AM Fjell, R Westerhausen, L Nyberg, KP Ebmeier & ...", - "title": "Healthy minds 0–100 years: Optimising the use of European brain imaging cohorts (“Lifebrain”)", - "journal": "European Psychiatry 50, 47-56", - "pubid": "Se3iqnhoufwC" - }, - { - "year": 2018, - "author": "D Vidal-Piñeiro, SH Markus, L Nyberg, AM Mowinckel, D Sederevicius & ...", - "title": "P2‐395: TESTING MAINTENANCE AND COMPENSATION NOTIONS IN NORMAL AGING: AGE‐RELATED CORRELATES OF ASSOCIATIVE ENCODING SUCCESS", - "journal": "Alzheimer's & Dementia 14 (7S_Part_16), P854-P854", - "pubid": "0EnyYjriUFMC" - }, - { - "year": 2017, - "author": "AM Mowinckel, D Alnæs, ML Pedersen, S Ziegler, M Fredriksen & ...", - "title": "Increased default-mode variability is related to reduced task-performance and is evident in adults with ADHD", - "journal": "NeuroImage: Clinical 16, 369-382", - "pubid": "Tyk-4Ss8FVUC" - }, - { - "year": 2016, - "author": "S Ziegler, ML Pedersen, AM Mowinckel & G Biele", - "title": "Modelling ADHD: A review of ADHD theories through their predictions for computational models of decision-making and reinforcement learning", - "journal": "Neuroscience & Biobehavioral Reviews 71, 633-656", - "pubid": "UeHWp8X0CEIC" - }, - { - "year": 2016, - "author": "AM Mowinckel & AM Mowinckel", - "title": "NEUROCOGNITIVE PROCESSES OF DECISION-MAKING IN ADULTS WITH ADHD", - "journal": "", - "pubid": "ZHo1McVdvXMC" - }, - { - "year": 2015, - "author": "AM Mowinckel, ML Pedersen, E Eilertsen & G Biele", - "title": "A meta-analysis of decision-making and attention in adults with ADHD", - "journal": "Journal of attention disorders 19 (5), 355-367", - "pubid": "d1gkVwhDpl0C" - }, - { - "year": 2012, - "author": "AM Mowinckel, T Espeseth & LT Westlye", - "title": "Network-specific effects of age and in-scanner subject motion: a resting-state fMRI study of 238 healthy adults", - "journal": "Neuroimage 63 (3), 1364-1373", - "pubid": "u5HHmVD_uO8C" - }, - { - "year": 2011, - "author": "AM Mowinckel & AM Mowinckel", - "title": "Default mode resting-state functional connectivity of the aging brain", - "journal": "", - "pubid": "u-x6o8ySG0sC" - }, - { - "author": "AM Fjell, H Grydeland, Y Wang et al.", - "title": "CA, USA", - "journal": "", - "pubid": "NaGl4SEjCO4C" - }, - { - "author": "L Raud, MH Sneve, D Vidal-Piñeiro et al.", - "title": "Hippocampal-cortical functional connectivity", - "journal": "", - "pubid": "hMod-77fHWUC" - }, - { - "author": "J Binnewies, L Nawijn, AM Brandmaier, WFC Baaré, D Bartrés-Faz & ...", - "title": "BASE-II", - "journal": "", - "pubid": "M3NEmzRMIkIC" - }, - { - "author": "AM Mowinckel, S Ziegler, EM Eilertsen et al.", - "title": "Meta-analysis of deficiencies in three domains of decision-making in adult ADHD", - "journal": "", - "pubid": "LkGwnXOMwfcC" - } -] diff --git a/data/team/pubs/ik_amlien.json b/data/team/pubs/ik_amlien.json deleted file mode 100644 index a61df03f..00000000 --- a/data/team/pubs/ik_amlien.json +++ /dev/null @@ -1,545 +0,0 @@ -[ - { - "year": 2025, - "author": "D Vidal-Piñeiro, Ø Sørensen, M Strømstad, IK Amlien, M Anderson & ...", - "title": "Reliability of structural brain change in cognitively healthy adult samples", - "journal": "Imaging Neuroscience 3, imag_a_00547", - "pubid": "M05iB0D1s5AC" - }, - { - "year": 2025, - "author": "AM Fjell, O Røgeberg, Ø Sørensen, IK Amlien, D Bartrés-Faz & ...", - "title": "Reevaluating the role of education in cognitive decline and brain aging: Insights from large-scale longitudinal cohorts across 33 countries", - "journal": "medRxiv ", - "pubid": "3s1wT3WcHBgC" - }, - { - "year": 2025, - "author": "AM Fjell, O Rogeberg, Ø Sørensen, IK Amlien, D Bartrés-Faz & ...", - "title": "Reevaluating the role of education on cognitive decline and brain aging in longitudinal cohorts across 33 Western countries", - "journal": "Nature Medicine 1-10", - "pubid": "D03iK_w7-QYC" - }, - { - "year": 2025, - "author": "D Vidal-Piñeiro, Ø Sørensen, M Strømstrad, IK Amlien, W Baaré & ...", - "title": "Vulnerability to memory decline in aging–a mega-analysis of structural brain change", - "journal": "bioRxiv 2025.03. 27.642988", - "pubid": "yD5IFk8b50cC" - }, - { - "year": 2025, - "author": "AM Fjell, MH Sneve, IK Amlien, H Grydeland, AM Mowinckel & ...", - "title": "Stable hippocampal correlates of high episodic memory function across adulthood", - "journal": "Scientific Reports 15 (1), 8816", - "pubid": "dfsIfKJdRG4C" - }, - { - "year": 2025, - "author": "KB Walhovd, ACS Bråthen, K Overbye, J Kransberg, Ø Sørensen & ...", - "title": "How and when can environmental influences change cerebral cortex? An experimental training study of twins with birth weight differences", - "journal": "bioRxiv 2025.03. 06.641380", - "pubid": "4OULZ7Gr8RgC" - }, - { - "year": 2024, - "author": "KB Walhovd, SK Krogsrud, IK Amlien et al.", - "title": "Fetal influence on the human brain through the lifespan", - "journal": "Elife 12, RP86812", - "pubid": "RGFaLdJalmkC" - }, - { - "year": 2024, - "author": "O Iakunchykova, M Pan, IK Amlien et al.", - "title": "Genetic evidence for the causal effects of C–reactive protein on self-reported habitual sleep duration", - "journal": "Brain, behavior, & immunity-health 37, 100754", - "pubid": "70eg2SAEIzsC" - }, - { - "year": 2024, - "author": "EOS Grødem, E Leonardsen, BJ MacIntosh, A Bjørnerud, T Schellhorn & ...", - "title": "A minimalistic approach to classifying Alzheimer’s disease using simple and extremely small convolutional neural networks", - "journal": "Journal of Neuroscience Methods 411, 110253", - "pubid": "g5m5HwL7SMYC" - }, - { - "year": 2024, - "author": "Z Van Der Pal, KB Walhovd, IK Amlien, CJ Guichelaar, A Kaiser & ...", - "title": "Stimulant medication use and apparent cortical thickness development in attention-deficit/hyperactivity disorder: a prospective longitudinal study", - "journal": "Frontiers in Psychiatry 15, 1365159", - "pubid": "lSLTfruPkqcC" - }, - { - "year": 2024, - "author": "H Grydeland, MH Sneve, JM Roe et al.", - "title": "Network segregation during episodic memory shows age-invariant relations with memory performance from 7 to 82 years", - "journal": "bioRxiv 2024.12. 23.630050", - "pubid": "ZHo1McVdvXMC" - }, - { - "year": 2024, - "author": "AM Fjell, MH Sneve, IK Amlien, H Grydeland, AM Mowinckel & ...", - "title": "What underlies exceptional memory function in older age? No evidence for aging-specific relationships to hippocampal atrophy and retrieval activity", - "journal": "bioRxiv 2024.04. 12.589183", - "pubid": "ldfaerwXgEUC" - }, - { - "year": 2024, - "author": "EOS Grødem, D Sederevičius, EH Leonardsen, BJ MacIntosh & ...", - "title": "MUSTER: Longitudinal Deformable Registration by Composition of Consecutive Deformations", - "journal": "arXiv preprint arXiv: :2412.14671", - "pubid": "SeFeTyx0c_EC" - }, - { - "year": 2024, - "author": "AM Fjell, MH Sneve, IK Amlien, H Grydeland, AM Mowinckel & ...", - "title": "What underlies high episodic memory function in older age? No evidence for aging-specific relationships to hippocampal atrophy and retrieval activity", - "journal": "", - "pubid": "HoB7MX3m0LUC" - }, - { - "year": 2023, - "author": "JM Roe, D Vidal-Pineiro, IK Amlien et al.", - "title": "Tracing the development and lifespan change of population-level structural asymmetry in the cerebral cortex", - "journal": "Elife 12, e84685", - "pubid": "k_IJM867U9cC" - }, - { - "year": 2023, - "author": "AM Fjell, Ø Sørensen, Y Wang et al.", - "title": "No phenotypic or genotypic evidence for a link between sleep duration and brain atrophy", - "journal": "Nature human behaviour 7 (11), 2008-2022", - "pubid": "vV6vV6tmYwMC" - }, - { - "year": 2023, - "author": "AM Fjell, Ø Sørensen, Y Wang et al.", - "title": "Is short sleep bad for the brain? Brain structure and cognitive function in short sleepers", - "journal": "Journal of Neuroscience 43 (28), 5241-5250", - "pubid": "O3NaXMp0MMsC" - }, - { - "year": 2022, - "author": "KB Walhovd, AM Fjell, Y Wang, IK Amlien, AM Mowinckel & ...", - "title": "Education and income show heterogeneous relationships to lifespan brain and cognitive differences across European and US cohorts", - "journal": "Cerebral cortex 32 (4), 839-854", - "pubid": "4JMBOYKVnBMC" - }, - { - "year": 2022, - "author": "Y Wang, H Grydeland, JM Roe et al.", - "title": "Associations of circulating C-reactive proteins, APOE ε4, and brain markers for Alzheimer’s disease in healthy samples across the lifespan", - "journal": "Brain, behavior, and immunity 100, 243-253", - "pubid": "maZDTaKrznsC" - }, - { - "year": 2022, - "author": "KB Walhovd, L Nyberg, U Lindenberger et al.", - "title": "Brain aging differs with cognitive ability regardless of education", - "journal": "Scientific reports 12 (1), 13886", - "pubid": "M3NEmzRMIkIC" - }, - { - "year": 2022, - "author": "AM Fjell, Ø Sørensen, Y Wang et al.", - "title": "Sleep duration and brain structure–phenotypic associations and genotypic covariance", - "journal": "bioRxiv 2022.02. 15.480501", - "pubid": "JV2RwH3_ST0C" - }, - { - "year": 2022, - "author": "D Vidal-Pineiro, Y Wang, SK Krogsrud, IK Amlien, WFC Baaré & ...", - "title": "Correction: Individual variations in ‘Brain Age’relate to early-life factors more than to longitudinal brain change", - "journal": "Elife 11, e79475", - "pubid": "blknAaTinKkC" - }, - { - "year": 2022, - "author": "D Vidal-Pineiro, Y Wang, SK Krogsrud, IK Amlien, WFC Baare & ...", - "title": "Individual variations in'Brain Age'relate to early-life factors more than to longitudinal brain change (vol 10, e69995, 2021)", - "journal": "ELIFE 11", - "pubid": "zA6iFVUQeVQC" - }, - { - "year": 2021, - "author": "D Vidal-Pineiro, Y Wang, SK Krogsrud, IK Amlien, WFC Baaré & ...", - "title": "Individual variations in ‘brain age’relate to early-life factors more than to longitudinal brain change", - "journal": "elife 10, e69995", - "pubid": "j3f4tGmQtD8C" - }, - { - "year": 2021, - "author": "AM Fjell, Ø Sørensen, IK Amlien, D Bartrés-Faz, AM Brandmaier & ...", - "title": "Poor self-reported sleep is related to regional cortical thinning in aging but not memory decline—results from the Lifebrain Consortium", - "journal": "Cerebral Cortex 31 (4), 1953-1969", - "pubid": "RHpTSmoSYBkC" - }, - { - "year": 2021, - "author": "J Sun, Y Wang, L Folkersen et al.", - "title": "Translating polygenic risk scores for clinical use by estimating the confidence bounds of risk prediction", - "journal": "Nature communications 12 (1), 5276", - "pubid": "isC4tDSrTZIC" - }, - { - "year": 2021, - "author": "SK Krogsrud, AM Mowinckel, D Sederevicius, D Vidal-Piñeiro, IK Amlien & ...", - "title": "Relationships between apparent cortical thickness and working memory across the lifespan-effects of genetics and socioeconomic status", - "journal": "Developmental cognitive neuroscience 51, 100997", - "pubid": "TFP_iSt0sucC" - }, - { - "year": 2021, - "author": "AM Fjell, H Grydeland, Y Wang et al.", - "title": "The genetic organization of longitudinal subcortical volumetric change is stable throughout the lifespan", - "journal": "elife 10, e66466", - "pubid": "R3hNpaxXUhUC" - }, - { - "year": 2021, - "author": "D Vidal-Piñeiro, MH Sneve, IK Amlien, H Grydeland, AM Mowinckel & ...", - "title": "The functional foundations of episodic memory remain stable throughout the lifespan", - "journal": "Cerebral cortex 31 (4), 2098-2110", - "pubid": "hFOr9nPyWt4C" - }, - { - "year": 2020, - "author": "KL Grasby, N Jahanshad, JN Painter, L Colodro-Conde, J Bralten & ...", - "title": "The genetic architecture of the human cerebral cortex", - "journal": "Science 367 (6484), eaay6690", - "pubid": "7PzlFSSx8tAC" - }, - { - "year": 2020, - "author": "AM Fjell, Ø Sørensen, IK Amlien et al.", - "title": "Self-reported sleep relates to hippocampal atrophy across the adult lifespan: results from the Lifebrain consortium", - "journal": "Sleep 43 (5), zsz280", - "pubid": "NaGl4SEjCO4C" - }, - { - "year": 2020, - "author": "O Esteban, R Ciric, K Finc et al.", - "title": "Analysis of task-based functional MRI data preprocessed with fMRIPrep", - "journal": "Nature protocols 15 (7), 2186-2202", - "pubid": "IWHjjKOFINEC" - }, - { - "year": 2020, - "author": "E Langnes, MH Sneve, D Sederevicius, IK Amlien, KB Walhovd & AM Fjell", - "title": "Anterior and posterior hippocampus macro‐and microstructure across the lifespan in relation to memory—A longitudinal study", - "journal": "Hippocampus 30 (7), 678-692", - "pubid": "-f6ydRqryjwC" - }, - { - "year": 2020, - "author": "KL Grasby, N Jahanshad, JN Painter, L Colodro-Conde, J Bralten & ...", - "title": "Enhancing NeuroImaging genetics through metaanalysis consortium (ENIGMA)-genetics working group. The genetic architecture of the human cerebral cortex", - "journal": "Science 367 (6484), 6690", - "pubid": "pqnbT2bcN3wC" - }, - { - "year": 2020, - "author": "KB Walhovd, I Amlien, A Schrantee et al.", - "title": "Methylphenidate effects on cortical thickness in children and adults with attention-deficit/hyperactivity disorder: a randomized clinical trial", - "journal": "American Journal of Neuroradiology 41 (5), 758-765", - "pubid": "HDshCWvjkbEC" - }, - { - "year": 2020, - "author": "AM Fjell, Ø Sørensen, IK Amlien, D Bartrés-Faz, AM Brandmaier & ...", - "title": "Self-reported sleep problems are related to cortical thinning in aging but not memory decline and amyloid-β accumulation–results from the Lifebrain consortium", - "journal": "bioRxiv 2020.04. 28.065474", - "pubid": "mB3voiENLucC" - }, - { - "year": 2020, - "author": "IK Amlien & IK Amlien", - "title": "The genetic architecture of the human cerebral cortex", - "journal": "American Association for the Advancement of Science 367 (6484)", - "pubid": "a0OBvERweLwC" - }, - { - "year": 2019, - "author": "E Langnes, D Vidal-Piñeiro, MH Sneve, IK Amlien, KB Walhovd & AM Fjell", - "title": "Development and decline of the hippocampal long-axis specialization and differentiation during encoding and retrieval of episodic memories", - "journal": "Cerebral Cortex 29 (8), 3398-3414", - "pubid": "9ZlFYXVOiuMC" - }, - { - "year": 2019, - "author": "AM Fjell, CH Chen, D Sederevicius, MH Sneve, H Grydeland & ...", - "title": "Continuity and discontinuity in human cortical development and change from embryonic stages to old age", - "journal": "Cerebral Cortex 29 (9), 3879-3890", - "pubid": "QIV2ME_5wuYC" - }, - { - "year": 2019, - "author": "IK Amlien, MH Sneve, D Vidal-Pineiro, KB Walhovd & AM Fjell", - "title": "Elaboration benefits source memory encoding through centrality change", - "journal": "Scientific Reports 9 (1), 3704", - "pubid": "ZeXyd9-uunAC" - }, - { - "year": 2019, - "author": "E Langnes, MH Sneve, D Sederevicius, IK Amlien, KB Walhovd & AM Fjell", - "title": "Lifespan trajectories and relationships to memory of the macro-and microstructure of the anterior and posterior hippocampus–a longitudinal multi-modal imaging study", - "journal": "BioRxiv 564732", - "pubid": "L8Ckcad2t8MC" - }, - { - "year": 2018, - "author": "KB Walhovd, AM Fjell, R Westerhausen, L Nyberg, KP Ebmeier & ...", - "title": "Healthy minds 0–100 years: Optimising the use of European brain imaging cohorts (“Lifebrain”)", - "journal": "European Psychiatry 50, 47-56", - "pubid": "Wp0gIr-vW9MC" - }, - { - "year": 2018, - "author": "IK Amlien, MH Sneve, D Vidal-Piñeiro, KB Walhovd & AM Fjell", - "title": "The lifespan trajectory of the encoding-retrieval flip: a multimodal examination of medial parietal cortex contributions to episodic memory", - "journal": "Journal of Neuroscience 38 (40), 8666-8679", - "pubid": "dhFuZR0502QC" - }, - { - "year": 2018, - "author": "E Hofer, GV Roshchupkin, HHH Adams et al.", - "title": "Genetic determinants of cortical structure (thickness, surface area and volumes) among disease free adults in the CHARGE Consortium", - "journal": "BioRxiv 409649", - "pubid": "r0BpntZqJG4C" - }, - { - "year": 2018, - "author": "J Shin, S Ma, E Hofer et al.", - "title": "Planar cell polarity pathway and development of the human visual cortex", - "journal": "bioRxiv 404558", - "pubid": "e5wmG9Sq2KIC" - }, - { - "year": 2017, - "author": "AM Fjell, MH Sneve, H Grydeland et al.", - "title": "Relationship between structural and functional connectivity change across the adult lifespan: a longitudinal investigation", - "journal": "Human brain mapping 38 (1), 561-573", - "pubid": "YOwf2qJgpHMC" - }, - { - "year": 2017, - "author": "MH Sneve, H Grydeland, IK Amlien, E Langnes, KB Walhovd & AM Fjell", - "title": "Decoupling of large-scale brain networks supports the consolidation of durable episodic memories", - "journal": "NeuroImage 153, 336-345", - "pubid": "4DMP91E08xMC" - }, - { - "year": 2016, - "author": "KB Walhovd, SK Krogsrud, IK Amlien, H Bartsch, A Bjørnerud & ...", - "title": "Neurodevelopmental origins of lifespan changes in brain and cognition", - "journal": "Proceedings of the National Academy of Sciences 113 (33), 9357-9362", - "pubid": "ULOm3_A8WrAC" - }, - { - "year": 2016, - "author": "IK Amlien, AM Fjell, CK Tamnes et al.", - "title": "Organizing principles of human cortical development—thickness and area from 4 to 30 years: insights from comparative primate neuroanatomy", - "journal": "Cerebral cortex 26 (1), 257-267", - "pubid": "KlAtU1dfN6UC" - }, - { - "year": 2015, - "author": "AM Fjell, H Grydeland, SK Krogsrud et al.", - "title": "Development and aging of cortical thickness correspond to genetic organization patterns", - "journal": "Proceedings of the National Academy of Sciences 112 (50), 15462-15467", - "pubid": "kNdYIx-mwKoC" - }, - { - "year": 2015, - "author": "AM Fjell, LT Westlye, I Amlien et al.", - "title": "High-expanding cortical regions in human development and evolution are related to higher intellectual abilities", - "journal": "Cerebral cortex 25 (1), 26-34", - "pubid": "YsMSGLbcyi4C" - }, - { - "year": 2015, - "author": "AM Fjell, MH Sneve, H Grydeland et al.", - "title": "Functional connectivity change across multiple cortical networks relates to episodic memory changes in aging", - "journal": "Neurobiology of Aging 36 (12), 3255-3268", - "pubid": "3fE2CSJIrl8C" - }, - { - "year": 2015, - "author": "MH Sneve, H Grydeland, L Nyberg et al.", - "title": "Mechanisms underlying encoding of short-lived versus durable episodic memories", - "journal": "Journal of Neuroscience 35 (13), 5202-5212", - "pubid": "MXK_kJrjxJIC" - }, - { - "year": 2015, - "author": "CK Tamnes, B Zeller, IK Amlien, A Kanellopoulos, S Andersson & ...", - "title": "Cortical surface area and thickness in adult survivors of pediatric acute lymphoblastic leukemia", - "journal": "Pediatric blood & cancer 62 (6), 1027-1034", - "pubid": "5nxA0vEk-isC" - }, - { - "year": 2015, - "author": "AM Fjell, IK Amlien, MH Sneve et al.", - "title": "The roots of Alzheimer's disease: Are high-expanding cortical areas preferentially targeted?", - "journal": "Cerebral Cortex 25 (9), 2556-2565", - "pubid": "_FxGoFyzp5QC" - }, - { - "year": 2014, - "author": "AM Fjell, LT Westlye, H Grydeland et al.", - "title": "Accelerating cortical thinning: unique to dementia or universal in aging?", - "journal": "Cerebral cortex 24 (4), 919-934", - "pubid": "IjCSPb-OGe4C" - }, - { - "year": 2014, - "author": "IK Amlien & AM Fjell", - "title": "Diffusion tensor imaging of white matter degeneration in Alzheimer’s disease and mild cognitive impairment", - "journal": "Neuroscience 276, 206-215", - "pubid": "roLk4NBRz8UC" - }, - { - "year": 2014, - "author": "SK Krogsrud, CK Tamnes, AM Fjell et al.", - "title": "Development of hippocampal subfield volumes from 4 to 22 years", - "journal": "Human brain mapping 35 (11), 5646-5657", - "pubid": "UebtZRa9Y70C" - }, - { - "year": 2014, - "author": "K Strømmen, EW Blakstad, SJ Moltu, AN Almaas, AC Westerberg & ...", - "title": "Enhanced nutrient supply to very low birth weight infants is associated with improved white matter maturation and head growth", - "journal": "Neonatology 107 (1), 68-75", - "pubid": "0EnyYjriUFMC" - }, - { - "year": 2014, - "author": "B Zeller, CK Tamnes, A Kanellopoulos, IK Amlien, S Andersson & ...", - "title": "Response to AAM van der Veldt et al", - "journal": "Journal of Clinical Oncology 32 (8), 852-853", - "pubid": "hC7cP41nSMkC" - }, - { - "year": 2013, - "author": "AM Fjell, LT Westlye, H Grydeland et al.", - "title": "Critical ages in the life course of the adult brain: nonlinear subcortical aging", - "journal": "Neurobiology of aging 34 (10), 2239-2247", - "pubid": "Tyk-4Ss8FVUC" - }, - { - "year": 2013, - "author": "B Zeller, CK Tamnes, A Kanellopoulos, IK Amlien, S Andersson & ...", - "title": "Reduced neuroanatomic volumes in long-term survivors of childhood acute lymphoblastic leukemia", - "journal": "Journal of clinical oncology 31 (17), 2078-2085", - "pubid": "eQOLeE2rZwMC" - }, - { - "year": 2013, - "author": "IK Amlien, AM Fjell, KB Walhovd et al.", - "title": "Mild cognitive impairment: cerebrospinal fluid tau biomarker pathologic levels and longitudinal changes in white matter integrity", - "journal": "Radiology 266 (1), 295-303", - "pubid": "Y0pCki6q_DkC" - }, - { - "year": 2012, - "author": "KB Walhovd, R Watts, I Amlien & LJ Woodward", - "title": "Neural tract development of infants born to methadone-maintained mothers", - "journal": "Pediatric neurology 47 (1), 1-6", - "pubid": "W7OEmFMy1HYC" - }, - { - "year": 2012, - "author": "AM Fjell, LT Westlye, IK Amlien & KB Walhovd", - "title": "A multi-modal investigation of behavioral adjustment: post-error slowing is associated with white matter characteristics", - "journal": "Neuroimage 61 (1), 195-205", - "pubid": "WF5omc3nYNoC" - }, - { - "year": 2012, - "author": "A Kanellopoulos, S Andersson, B Zeller et al.", - "title": "NEUROCOGNITIVE FUNCTION IS REDUCED IN LONG-TERM SURVIVORS OF ACUTE LYMPHOBLASTIC LEUKEMIA TREATED WITH CHEMOTHERAPY ONLY-BUT POORER PERFORMANCE IS NOT ASSOCIATED WITH HIGHER …", - "journal": "Pediatric Blood & Cancer 59 (6), 1106", - "pubid": "Se3iqnhoufwC" - }, - { - "year": 2011, - "author": "KB Walhovd, LT Westlye, I Amlien et al.", - "title": "Consistent neuroanatomical age-related volume differences across multiple samples", - "journal": "Neurobiology of aging 32 (5), 916-932", - "pubid": "u-x6o8ySG0sC" - }, - { - "year": 2011, - "author": "AM Fjell, LT Westlye, IK Amlien & KB Walhovd", - "title": "Reduced white matter integrity is related to cognitive instability", - "journal": "Journal of Neuroscience 31 (49), 18060-18072", - "pubid": "qjMakFHDy7sC" - }, - { - "year": 2010, - "author": "AM Fjell, IK Amlien, LT Westlye et al.", - "title": "CSF biomarker pathology correlates with a medial temporo-parietal network affected by very mild to moderate Alzheimer's disease but not a fronto-striatal network affected by …", - "journal": "Neuroimage 49 (2), 1820-1830", - "pubid": "UeHWp8X0CEIC" - }, - { - "year": 2010, - "author": "IK Amlien & IK Amlien", - "title": "Hvitsubstansendringer ved lett kognitiv svikt: en longitudinell studie med diffusion tensor imaging om sammenhengen mellom CSF Tau, hvitsubstansintegritet og hukommelse", - "journal": "", - "pubid": "ufrVoPGSRksC" - }, - { - "year": 2009, - "author": "AM Fjell, LT Westlye, I Amlien et al.", - "title": "High consistency of regional cortical thinning in aging across multiple samples", - "journal": "Cerebral cortex 19 (9), 2001-2012", - "pubid": "u5HHmVD_uO8C" - }, - { - "year": 2009, - "author": "AM Fjell, LT Westlye, I Amlien et al.", - "title": "Minute effects of sex on the aging brain: a multisample magnetic resonance imaging study of healthy aging and Alzheimer's disease", - "journal": "Journal of Neuroscience 29 (27), 8774-8783", - "pubid": "2osOgNQ5qMEC" - }, - { - "year": 2009, - "author": "KB Walhovd, AM Fjell, I Amlien et al.", - "title": "Multimodal imaging in mild cognitive impairment: Metabolism, morphometry and diffusion of the temporal–parietal memory network", - "journal": "Neuroimage 45 (1), 215-223", - "pubid": "d1gkVwhDpl0C" - }, - { - "year": 2009, - "author": "AM Fjell, IK Amlien, LT Westlye & KB Walhovd", - "title": "Mini-mental state examination is sensitive to brain atrophy in Alzheimer’s disease", - "journal": "Dementia and geriatric cognitive disorders 28 (3), 252-258", - "pubid": "zYLM7Y9cAGgC" - }, - { - "year": 2008, - "author": "AM Fjell, KB Walhovd, I Amlien et al.", - "title": "Morphometric changes in the episodic memory network and tau pathologic features correlate with memory performance in patients with mild cognitive impairment", - "journal": "American Journal of Neuroradiology 29 (6), 1183-1189", - "pubid": "9yKSN-GCB0IC" - }, - { - "author": "P Helfer, TR Shultz, E Langnes et al.", - "title": "Hippocam", - "journal": "", - "pubid": "cFHS6HbyZ2cC" - }, - { - "author": "AM Fjell, H Grydeland, Y Wang et al.", - "title": "CA, USA", - "journal": "", - "pubid": "35N4QoGY0k4C" - }, - { - "author": "Z van der Pal, K Walhovd, I Amlien et al.", - "title": "Long-term effects of stimulant treatment on regional cortical thickness development in ADHD", - "journal": "", - "pubid": "YFjsv_pBGBYC" - } -] diff --git a/data/team/pubs/jla_warren.json b/data/team/pubs/jla_warren.json deleted file mode 100644 index fb33b8da..00000000 --- a/data/team/pubs/jla_warren.json +++ /dev/null @@ -1,114 +0,0 @@ -[ - { - "year": 2025, - "author": "H Wang, N Blanke, D Gong et al.", - "title": "Imaging of developing human brains with ex vivo PSOCT and dMRI", - "journal": "Imaging Neuroscience 3, imag_a_00510", - "pubid": "Se3iqnhoufwC" - }, - { - "year": 2025, - "author": "K Tsujimura, A Ortug, JL Alatorre Warren, T Shiohama, CJ McDougle & ...", - "title": "Structural pathways related to the subventricular zone are decreased in volume with altered microstructure in young adult males with autism spectrum disorder", - "journal": "Cerebral Cortex 35 (3), bhaf041", - "pubid": "UebtZRa9Y70C" - }, - { - "year": 2024, - "author": "A Ortug, Y Guo, HA Feldman et al.", - "title": "Autism-associated brain differences can be observed in utero using MRI", - "journal": "Cerebral Cortex 34 (4)", - "pubid": "roLk4NBRz8UC" - }, - { - "year": 2023, - "author": "M Wilhelm, Y Sych, A Fomins, JL Alatorre Warren, C Lewis & ...", - "title": "Striatum-projecting prefrontal cortex neurons support working memory maintenance", - "journal": "Nature Communications 14 (1), 7016", - "pubid": "9yKSN-GCB0IC" - }, - { - "year": 2023, - "author": "A Ortug, B Valli, JL Alatorre Warren, T Shiohama, A van der Kouwe & ...", - "title": "Brain Pathways in LIS1-Associated Lissencephaly Revealed by Diffusion MRI Tractography", - "journal": "Brain Sciences 13 (12), 1655", - "pubid": "LkGwnXOMwfcC" - }, - { - "year": 2022, - "author": "T Shiohama, A Ortug, JLA Warren et al.", - "title": "Small nucleus accumbens and large cerebral ventricles in infants and toddlers prior to receiving diagnoses of autism spectrum disorder", - "journal": "Cerebral Cortex 32 (6), 1200-1211", - "pubid": "Y0pCki6q_DkC" - }, - { - "year": 2022, - "author": "JL Alatorre Warren, L Drak, S Shalwani, H Jung, A Ortug & E Takahashi", - "title": "The Evolution of Language‐Related Long Association Pathways: A Comparative Study Between Humans and Rhesus Macaques", - "journal": "The FASEB Journal 36", - "pubid": "YsMSGLbcyi4C" - }, - { - "year": 2021, - "author": "MS Ponce de León, T Bienvenu, A Marom, S Engel, P Tafforeau & ...", - "title": "The primitive brain of early Homo", - "journal": "Science 372 (6538), 165-171", - "pubid": "zYLM7Y9cAGgC" - }, - { - "year": 2020, - "author": "JLA Warren, MP De Leon, WD Hopkins & CPE Zollikofer", - "title": "Evolutionary changes in neurocranial structure do not correlate with cortical reorganization in humans", - "journal": "AMERICAN JOURNAL OF PHYSICAL ANTHROPOLOGY 171, 4-5", - "pubid": "qjMakFHDy7sC" - }, - { - "year": 2019, - "author": "JL Alatorre Warren, MS Ponce de León, WD Hopkins & CPE Zollikofer", - "title": "Evidence for independent brain and neurocranial reorganization during hominin evolution", - "journal": "Proceedings of the National Academy of Sciences 116 (44), 22115-22121", - "pubid": "d1gkVwhDpl0C" - }, - { - "year": 2019, - "author": "JLA Warren & JLA Warren", - "title": "Brain reorganization during human evolution", - "journal": "PNAS 116 (44), 21951-21952", - "pubid": "W7OEmFMy1HYC" - }, - { - "year": 2019, - "author": "JLA Warren, MP De Leon, WD Hopkins & CPE Zollikofer", - "title": "Evolutionary changes in neurocranial structure do not correlate with cortical reorganization in humans", - "journal": "AMERICAN JOURNAL OF PHYSICAL ANTHROPOLOGY 168, 3-3", - "pubid": "Tyk-4Ss8FVUC" - }, - { - "year": 2019, - "author": "JL Alatorre Warren & JL Alatorre Warren", - "title": "Structural relationships between the neurocranium and brain in humans and great apes", - "journal": "University of Zurich ", - "pubid": "eQOLeE2rZwMC" - }, - { - "year": 2019, - "author": "JLA Warren & JLA Warren", - "title": "Structural Relationships Between the Neurocranium and Brain in Humans and Great Apes", - "journal": "Universität Zürich ", - "pubid": "2osOgNQ5qMEC" - }, - { - "year": 2018, - "author": "D Falk, CPE Zollikofer, M Ponce de León, K Semendeferi & ...", - "title": "Identification of in vivo sulci on the external surface of eight adult chimpanzee brains: Implications for interpreting early hominin endocasts", - "journal": "Brain, Behavior and Evolution 91 (1), 45-58", - "pubid": "u-x6o8ySG0sC" - }, - { - "year": 2018, - "author": "D Falk, CPE Zollikofer, MP De Leon, K Semendeferi, JLA Warren & ...", - "title": "In vivo magnetic resonance images of chimpanzee brains suggest that published australopithecine sulcal patterns fall within the range for extant apes", - "journal": "AMERICAN JOURNAL OF PHYSICAL ANTHROPOLOGY 165, 81-81", - "pubid": "IjCSPb-OGe4C" - } -] diff --git a/data/team/pubs/mh_sneve.json b/data/team/pubs/mh_sneve.json deleted file mode 100644 index 3e57eaf1..00000000 --- a/data/team/pubs/mh_sneve.json +++ /dev/null @@ -1,499 +0,0 @@ -[ - { - "year": 2025, - "author": "D Vidal-Piñeiro, Ø Sørensen, M Strømstad, IK Amlien, M Anderson & ...", - "title": "Reliability of structural brain change in cognitively healthy adult samples", - "journal": "Imaging Neuroscience 3, imag_a_00547", - "pubid": "JV2RwH3_ST0C" - }, - { - "year": 2025, - "author": "AM Fjell, O Røgeberg, Ø Sørensen, IK Amlien, D Bartrés-Faz & ...", - "title": "Reevaluating the role of education in cognitive decline and brain aging: Insights from large-scale longitudinal cohorts across 33 countries", - "journal": "medRxiv ", - "pubid": "RYcK_YlVTxYC" - }, - { - "year": 2025, - "author": "BE Padrela, M Slivka, MH Sneve et al.", - "title": "Blood-brain barrier water permeability across the adult lifespan: A multi-echo ASL study", - "journal": "Neurobiology of Aging 147, 176-186", - "pubid": "J_g5lzvAfSwC" - }, - { - "year": 2025, - "author": "AM Fjell, O Rogeberg, Ø Sørensen, IK Amlien, D Bartrés-Faz & ...", - "title": "Reevaluating the role of education on cognitive decline and brain aging in longitudinal cohorts across 33 Western countries", - "journal": "Nature Medicine 1-10", - "pubid": "M05iB0D1s5AC" - }, - { - "year": 2025, - "author": "L Etholm, J Ivanovic, VS Larsen, MH Sneve, MI Lossius & KÅ Alfstad", - "title": "Localizing value of disturbances of self‐integration, depersonalization, and forced thinking: A systematic review", - "journal": "Epileptic Disorders 27 (2), 156-170", - "pubid": "RGFaLdJalmkC" - }, - { - "year": 2025, - "author": "AM Fjell, MH Sneve, IK Amlien, H Grydeland, AM Mowinckel & ...", - "title": "Stable hippocampal correlates of high episodic memory function across adulthood", - "journal": "Scientific Reports 15 (1), 8816", - "pubid": "70eg2SAEIzsC" - }, - { - "year": 2025, - "author": "A Ravndal, AM Fjell, D Vidal-Piñeiro et al.", - "title": "Sex differences in healthy brain aging are unlikely to explain higher Alzheimer’s disease prevalence in women", - "journal": "Proceedings of the National Academy of Sciences 122 (42), e2510486122", - "pubid": "SeFeTyx0c_EC" - }, - { - "year": 2025, - "author": "L Raud, MJB Smits, MH Sneve et al.", - "title": "Differential expression of spatiotemporal sleep spindle clusters in ageing", - "journal": "bioRxiv 2025.05. 19.654222", - "pubid": "ldfaerwXgEUC" - }, - { - "year": 2025, - "author": "KB Walhovd, ACS Bråthen, K Overbye, J Kransberg, Ø Sørensen & ...", - "title": "How and when can environmental influences change cerebral cortex? An experimental training study of twins with birth weight differences", - "journal": "bioRxiv 2025.03. 06.641380", - "pubid": "35N4QoGY0k4C" - }, - { - "year": 2025, - "author": "EG Blakstad, M Sneve, D Vidal-Pineiro, KB Walhovd, AM Fjell & ...", - "title": "Memory-Related Default-Executive Coupling Across the Lifespan and Associations with Changes in Cognitive Control", - "journal": "bioRxiv 2025.09. 02.673776", - "pubid": "pqnbT2bcN3wC" - }, - { - "year": 2024, - "author": "B Padrela, A Mahroo, M Tee et al.", - "title": "Developing blood-brain barrier arterial spin labelling as a non-invasive early biomarker of Alzheimer’s disease (DEBBIE-AD): A prospective observational multicohort study protocol", - "journal": "BMJ open 14 (3), e081635", - "pubid": "isC4tDSrTZIC" - }, - { - "year": 2024, - "author": "HT Ness, L Folvik, MH Sneve et al.", - "title": "Recalled through this day but forgotten next week?—retrieval activity predicts durability of partly consolidated memories", - "journal": "Cerebral Cortex 34 (6), bhae233", - "pubid": "blknAaTinKkC" - }, - { - "year": 2024, - "author": "H Grydeland, MH Sneve, JM Roe et al.", - "title": "Network segregation during episodic memory shows age-invariant relations with memory performance from 7 to 82 years", - "journal": "bioRxiv 2024.12. 23.630050", - "pubid": "NaGl4SEjCO4C" - }, - { - "year": 2024, - "author": "AM Fjell, MH Sneve, IK Amlien, H Grydeland, AM Mowinckel & ...", - "title": "What underlies exceptional memory function in older age? No evidence for aging-specific relationships to hippocampal atrophy and retrieval activity", - "journal": "bioRxiv 2024.04. 12.589183", - "pubid": "M3NEmzRMIkIC" - }, - { - "year": 2024, - "author": "AM Fjell, MH Sneve, IK Amlien, H Grydeland, AM Mowinckel & ...", - "title": "What underlies high episodic memory function in older age? No evidence for aging-specific relationships to hippocampal atrophy and retrieval activity", - "journal": "", - "pubid": "ns9cj8rnVeAC" - }, - { - "year": 2024, - "author": "L Raud, M Smits, M Sneve et al.", - "title": "Enriching spindle feature space for age-related memory decline biomarker applications", - "journal": "JOURNAL OF SLEEP RESEARCH 33", - "pubid": "vV6vV6tmYwMC" - }, - { - "year": 2024, - "author": "B Padrela, A Mahroo, M Tee et al.", - "title": "DEveloping BBB-ASL as non-Invasive Early biomarker of Alzheimer's Disease (DEBBIE-AD): Study design", - "journal": "Cerebral Circulation-Cognition and Behavior 6, 100308", - "pubid": "BqipwSGYUEgC" - }, - { - "year": 2023, - "author": "JM Roe, D Vidal-Pineiro, IK Amlien et al.", - "title": "Tracing the development and lifespan change of population-level structural asymmetry in the cerebral cortex", - "journal": "Elife 12, e84685", - "pubid": "e5wmG9Sq2KIC" - }, - { - "year": 2023, - "author": "L Raud, MH Sneve, D Vidal-Piñeiro et al.", - "title": "Hippocampal-cortical functional connectivity during memory encoding and retrieval", - "journal": "NeuroImage 279, 120309", - "pubid": "j3f4tGmQtD8C" - }, - { - "year": 2023, - "author": "L Folvik, MH Sneve, HT Ness et al.", - "title": "Sustained upregulation of widespread hippocampal–neocortical coupling following memory encoding", - "journal": "Cerebral Cortex 33 (8), 4844-4858", - "pubid": "_Qo2XoVZTnwC" - }, - { - "year": 2023, - "author": "AR Løchen, KK Kolskår, AMG de Lange, MH Sneve, B Haatveit & ...", - "title": "Visual processing deficits in patients with schizophrenia spectrum and bipolar disorders and associations with psychotic symptoms, and intellectual abilities", - "journal": "Heliyon 9 (2)", - "pubid": "TFP_iSt0sucC" - }, - { - "year": 2023, - "author": "B Padrela, M Sneve, S Zelhorst et al.", - "title": "Blood-brain barrier permeability changes over the lifespan", - "journal": "International Society of Magnetic Resonance in Medicine ", - "pubid": "NMxIlDl6LWMC" - }, - { - "year": 2023, - "author": "LE Hauger, MH Sneve, B Nedregaard & A Skogan", - "title": "Functional magnetic resonance imaging for preoperative planning in pediatric epilepsy", - "journal": "EPILEPSIA 64, 406-406", - "pubid": "maZDTaKrznsC" - }, - { - "year": 2022, - "author": "E Capogna, MH Sneve, L Raud et al.", - "title": "Whole-brain connectivity during encoding: age-related differences and associations with cognitive and brain structural decline", - "journal": "Cerebral Cortex 33 (1), 68-82", - "pubid": "TQgYirikUcIC" - }, - { - "year": 2022, - "author": "HT Ness, L Folvik, MH Sneve et al.", - "title": "Reduced hippocampal-striatal interactions during formation of durable episodic memories in aging", - "journal": "Cerebral Cortex 32 (11), 2358-2372", - "pubid": "R3hNpaxXUhUC" - }, - { - "year": 2021, - "author": "L Lengali, J Hippe, C Hatlestad-Hall, TW Rygvold, MH Sneve & ...", - "title": "Sensory-induced human LTP-like synaptic plasticity–using visual evoked potentials to explore the relation between LTP-like synaptic plasticity and visual perceptual learning", - "journal": "Frontiers in Human Neuroscience 15, 684573", - "pubid": "mB3voiENLucC" - }, - { - "year": 2021, - "author": "D Vidal-Piñeiro, MH Sneve, IK Amlien, H Grydeland, AM Mowinckel & ...", - "title": "The functional foundations of episodic memory remain stable throughout the lifespan", - "journal": "Cerebral cortex 31 (4), 2098-2110", - "pubid": "ZeXyd9-uunAC" - }, - { - "year": 2021, - "author": "O Esteban, A Adebimpe, CJ Markiewicz, M Goncalves, RW Blair & ...", - "title": "The Bermuda Triangle of d-and f-MRI sailors-software for susceptibility distortions (SDCFlows)", - "journal": "OSF ", - "pubid": "hFOr9nPyWt4C" - }, - { - "year": 2021, - "author": "AR Løchen, KK Kolskår, AMG de Lange, MH Sneve, B Haatveit & ...", - "title": "Spatial frequency discrimination in patients with schizophrenia spectrum and bipolar disorders: Evidence of early visual processing deficits and associations with intellectual …", - "journal": "medRxiv 2021.06. 28.21259309", - "pubid": "HDshCWvjkbEC" - }, - { - "year": 2020, - "author": "E Langnes, MH Sneve, D Sederevicius, IK Amlien, KB Walhovd & AM Fjell", - "title": "Anterior and posterior hippocampus macro‐and microstructure across the lifespan in relation to memory—A longitudinal study", - "journal": "Hippocampus 30 (7), 678-692", - "pubid": "L8Ckcad2t8MC" - }, - { - "year": 2020, - "author": "T Endestad, RI Godøy, MH Sneve, T Hagen, A Bochynska & B Laeng", - "title": "Mental effort when playing, listening, and imagining music in one pianist’s eyes and brain", - "journal": "Frontiers in Human Neuroscience 14, 576888", - "pubid": "hC7cP41nSMkC" - }, - { - "year": 2020, - "author": "AM Fjell, D Sederevicius, MH Sneve, AMG de Lange, ACS Bråthen & ...", - "title": "Self-reported Sleep Problems Related to Amyloid Deposition in Cortical Regions with High HOMER1 Gene Expression", - "journal": "Cerebral Cortex 30 (4), 2144-2156", - "pubid": "IWHjjKOFINEC" - }, - { - "year": 2020, - "author": "JM Roe, D Vidal-Piñeiro, MH Sneve et al.", - "title": "Age-related differences in functional asymmetry during memory retrieval revisited: no evidence for contralateral overactivation or compensation", - "journal": "Cerebral Cortex 30 (3), 1129-1147", - "pubid": "YOwf2qJgpHMC" - }, - { - "year": 2019, - "author": "E Langnes, D Vidal-Piñeiro, MH Sneve, IK Amlien, KB Walhovd & AM Fjell", - "title": "Development and decline of the hippocampal long-axis specialization and differentiation during encoding and retrieval of episodic memories", - "journal": "Cerebral Cortex 29 (8), 3398-3414", - "pubid": "5nxA0vEk-isC" - }, - { - "year": 2019, - "author": "D Vidal-Piñeiro, MH Sneve, LH Nyberg, AM Mowinckel, D Sederevicius & ...", - "title": "Maintained frontal activity underlies high memory function over 8 years in aging", - "journal": "Cerebral cortex 29 (7), 3111-3123", - "pubid": "Zph67rFs4hoC" - }, - { - "year": 2019, - "author": "AM Fjell, CH Chen, D Sederevicius, MH Sneve, H Grydeland & ...", - "title": "Continuity and discontinuity in human cortical development and change from embryonic stages to old age", - "journal": "Cerebral Cortex 29 (9), 3879-3890", - "pubid": "8k81kl-MbHgC" - }, - { - "year": 2019, - "author": "MH Sneve, H Grydeland, MGP Rosa et al.", - "title": "High-expanding regions in primate cortical brain evolution support supramodal cognitive flexibility", - "journal": "Cerebral cortex 29 (9), 3891-3901", - "pubid": "4TOpqqG69KYC" - }, - { - "year": 2019, - "author": "KM Walle, JE Nordvik, F Becker, T Espeseth, MH Sneve & B Laeng", - "title": "Unilateral neglect post stroke: Eye movement frequencies indicate directional hypokinesia while fixation distributions suggest compensational mechanism", - "journal": "Brain and Behavior 9 (1), e01170", - "pubid": "qxL8FJ1GzNcC" - }, - { - "year": 2019, - "author": "AM Fjell, MH Sneve, D Sederevicius, Ø Sørensen, SK Krogsrud & ...", - "title": "Volumetric and microstructural regional changes of the hippocampus underlying development of recall performance after extended retention intervals", - "journal": "Developmental cognitive neuroscience 40, 100723", - "pubid": "QIV2ME_5wuYC" - }, - { - "year": 2019, - "author": "IK Amlien, MH Sneve, D Vidal-Pineiro, KB Walhovd & AM Fjell", - "title": "Elaboration benefits source memory encoding through centrality change", - "journal": "Scientific Reports 9 (1), 3704", - "pubid": "4DMP91E08xMC" - }, - { - "year": 2019, - "author": "E Langnes, MH Sneve, D Sederevicius, IK Amlien, KB Walhovd & AM Fjell", - "title": "Lifespan trajectories and relationships to memory of the macro-and microstructure of the anterior and posterior hippocampus–a longitudinal multi-modal imaging study", - "journal": "BioRxiv 564732", - "pubid": "aqlVkmm33-oC" - }, - { - "year": 2019, - "author": "AM Fjell, MH Sneve, D Sederevicius, Ø Sørensen, SK Krogsrud & ...", - "title": "Volumetric and microstructural regional changes of the hippocampus underlying development of extended delay long-term memory", - "journal": "bioRxiv 595827", - "pubid": "Wp0gIr-vW9MC" - }, - { - "year": 2018, - "author": "IK Amlien, MH Sneve, D Vidal-Piñeiro, KB Walhovd & AM Fjell", - "title": "The lifespan trajectory of the encoding-retrieval flip: a multimodal examination of medial parietal cortex contributions to episodic memory", - "journal": "Journal of Neuroscience 38 (40), 8666-8679", - "pubid": "ULOm3_A8WrAC" - }, - { - "year": 2018, - "author": "ACS Bråthen, AMG De Lange, DA Rohani, MH Sneve, AM Fjell & ...", - "title": "Multimodal cortical and hippocampal prediction of episodic‐memory plasticity in young and older adults", - "journal": "Human Brain Mapping 39 (11), 4480-4492", - "pubid": "KlAtU1dfN6UC" - }, - { - "year": 2018, - "author": "MH Sneve, H Grydeland, MGP Rosa et al.", - "title": "The hotspots in primate cortical brain evolution support supramodal cognitive flexibility", - "journal": "bioRxiv 333930", - "pubid": "MXK_kJrjxJIC" - }, - { - "year": 2018, - "author": "AM Fjell, D Sederevicius, MH Sneve, AMG de Lange, ACS Bråthen & ...", - "title": "Longitudinal increase in sleep problems is related to amyloid deposition in cortical regions with high HOMER1 gene expression", - "journal": "bioRxiv 335612", - "pubid": "3fE2CSJIrl8C" - }, - { - "year": 2017, - "author": "AM Fjell, MH Sneve, H Grydeland, AB Storsve & KB Walhovd", - "title": "The disconnected brain and executive function decline in aging", - "journal": "Cerebral cortex 27 (3), 2303-2317", - "pubid": "_FxGoFyzp5QC" - }, - { - "year": 2017, - "author": "AM Fjell, MH Sneve, H Grydeland et al.", - "title": "Relationship between structural and functional connectivity change across the adult lifespan: a longitudinal investigation", - "journal": "Human brain mapping 38 (1), 561-573", - "pubid": "Se3iqnhoufwC" - }, - { - "year": 2017, - "author": "MH Sneve, H Grydeland, IK Amlien, E Langnes, KB Walhovd & AM Fjell", - "title": "Decoupling of large-scale brain networks supports the consolidation of durable episodic memories", - "journal": "NeuroImage 153, 336-345", - "pubid": "LkGwnXOMwfcC" - }, - { - "year": 2017, - "author": "D Vidal-Piñeiro, MH Sneve, AB Storsve, JM Roe, KB Walhovd & AM Fjell", - "title": "Neural correlates of durable memories across the adult lifespan: brain activity at encoding and retrieval", - "journal": "Neurobiology of aging 60, 20-33", - "pubid": "UebtZRa9Y70C" - }, - { - "year": 2017, - "author": "M Sneve, AM Fjell & K Beate", - "title": "DUF1220 copy number and the evolutionary expansion of primate cerebral cortex", - "journal": "BEHAVIOR GENETICS 47 (6), 715-716", - "pubid": "0EnyYjriUFMC" - }, - { - "year": 2016, - "author": "AM Fjell, MH Sneve, AB Storsve, H Grydeland, A Yendiki & KB Walhovd", - "title": "Brain events underlying episodic memory changes in aging: a longitudinal investigation of structural and functional connectivity", - "journal": "Cerebral cortex 26 (3), 1272-1286", - "pubid": "YsMSGLbcyi4C" - }, - { - "year": 2016, - "author": "JM Roe, M Nesheim, NC Mathiesen, T Moberget, D Alnæs & MH Sneve", - "title": "The effects of tDCS upon sustained visual attention are dependent on cognitive load", - "journal": "Neuropsychologia 80, 1-8", - "pubid": "ufrVoPGSRksC" - }, - { - "year": 2016, - "author": "ES Dørum, D Alnæs, T Kaufmann et al.", - "title": "Age‐related differences in brain network activation and co‐activation during multiple object tracking", - "journal": "Brain and behavior 6 (11), e00533", - "pubid": "roLk4NBRz8UC" - }, - { - "year": 2015, - "author": "AM Fjell, MH Sneve, H Grydeland et al.", - "title": "Functional connectivity change across multiple cortical networks relates to episodic memory changes in aging", - "journal": "Neurobiology of Aging 36 (12), 3255-3268", - "pubid": "WF5omc3nYNoC" - }, - { - "year": 2015, - "author": "MH Sneve, H Grydeland, L Nyberg et al.", - "title": "Mechanisms underlying encoding of short-lived versus durable episodic memories", - "journal": "Journal of Neuroscience 35 (13), 5202-5212", - "pubid": "W7OEmFMy1HYC" - }, - { - "year": 2015, - "author": "D Alnæs, T Kaufmann, G Richard et al.", - "title": "Attentional load modulates large-scale functional brain connectivity beyond the core attention networks", - "journal": "Neuroimage 109, 260-272", - "pubid": "Y0pCki6q_DkC" - }, - { - "year": 2015, - "author": "D Alnæs, MH Sneve, G Richard et al.", - "title": "Functional connectivity indicates differential roles for the intraparietal sulcus and the superior parietal lobule in multiple object tracking", - "journal": "Neuroimage 123, 129-137", - "pubid": "eQOLeE2rZwMC" - }, - { - "year": 2015, - "author": "AM Fjell, IK Amlien, MH Sneve et al.", - "title": "The roots of Alzheimer's disease: Are high-expanding cortical areas preferentially targeted?", - "journal": "Cerebral Cortex 25 (9), 2556-2565", - "pubid": "zYLM7Y9cAGgC" - }, - { - "year": 2015, - "author": "MH Sneve, KK Sreenivasan, D Alnæs, T Endestad & S Magnussen", - "title": "Short-term retention of visual information: Evidence in support of feature-based attention as an underlying mechanism", - "journal": "Neuropsychologia 66, 1-9", - "pubid": "Tyk-4Ss8FVUC" - }, - { - "year": 2014, - "author": "D Alnæs, MH Sneve, T Espeseth, T Endestad, SHP van de Pavert & ...", - "title": "Pupil size signals mental effort deployed during multiple object tracking and predicts brain activity in the dorsal attention network and the locus coeruleus", - "journal": "Journal of vision 14 (4), 1-1", - "pubid": "IjCSPb-OGe4C" - }, - { - "year": 2013, - "author": "MH Sneve, S Magnussen, D Alnæs, T Endestad & M D'Esposito", - "title": "Top–down modulation from inferior frontal junction to FEFs and intraparietal sulcus during short-term memory for visual features", - "journal": "Journal of Cognitive Neuroscience 25 (11), 1944-1956", - "pubid": "2osOgNQ5qMEC" - }, - { - "year": 2012, - "author": "MH Sneve, D Alnæs, T Endestad, MW Greenlee & S Magnussen", - "title": "Visual short-term memory: Activity supporting encoding and maintenance in retinotopic visual cortex", - "journal": "Neuroimage 63 (1), 166-178", - "pubid": "u-x6o8ySG0sC" - }, - { - "year": 2011, - "author": "MH Sneve, D Alnæs, T Endestad, MW Greenlee & S Magnussen", - "title": "Modulation of activity in human visual area V1 during memory masking", - "journal": "PloS one 6 (4), e18651", - "pubid": "u5HHmVD_uO8C" - }, - { - "year": 2010, - "author": "T Espeseth, MH Sneve, H Rootwelt & B Laeng", - "title": "Nicotinic receptor gene CHRNA4 interacts with processing load in attention", - "journal": "PloS one 5 (12), e14407", - "pubid": "d1gkVwhDpl0C" - }, - { - "author": "BE Padrela, S Tecelão, ME Tranfa et al.", - "title": "Blood-brain barrier water permeability in relation to Alzheimer’s Disease and age-related vascular damage", - "journal": "", - "pubid": "HoB7MX3m0LUC" - }, - { - "author": "B Padrela, S Tecelão, BE Kirsebom et al.", - "title": "Blood-Brain Barrier Water Exchange in Relation to Amyloid, Cognition and Cerebrovascular Burden", - "journal": "", - "pubid": "g5m5HwL7SMYC" - }, - { - "author": "P Helfer, TR Shultz, E Langnes et al.", - "title": "Hippocam", - "journal": "", - "pubid": "2P1L_qKh6hAC" - }, - { - "author": "BE Padrela, S Tecelão, O Geier et al.", - "title": "ASL blood-brain barrier permeability is associated with amyloid and cognitive impairment", - "journal": "", - "pubid": "O3NaXMp0MMsC" - }, - { - "author": "B Padrela, M Slivka, MH Sneve et al.", - "title": "Normal Blood-Brain Barrier Water Permeability Across the Lifespan: A Multi-Echo Asl Study", - "journal": "", - "pubid": "YFjsv_pBGBYC" - }, - { - "author": "B Padrela, M Tee, M Sneve et al.", - "title": "DEveloping Blood-Brain barrier arterial spin labeling as a non-Invasive Early biomarker (DEBBIE)", - "journal": "", - "pubid": "hMod-77fHWUC" - }, - { - "author": "L Raud, MH Sneve, D Vidal-Piñeiro et al.", - "title": "Hippocampal-cortical functional connectivity", - "journal": "", - "pubid": "iH-uZ7U-co4C" - } -] diff --git a/scripts/get_pubs.R b/scripts/get_pubs.R deleted file mode 100644 index e9e95b54..00000000 --- a/scripts/get_pubs.R +++ /dev/null @@ -1,60 +0,0 @@ -library(jsonlite) -library(scholar) - -get_pubs <- function(id, file) { - if (is.null(id)) { - return() - } - dt <- get_publications(id) - dt <- dt[order(dt$year, decreasing = TRUE), ] - # dt$url <- sprintf("https://scholar.google.no/citations?view_op=view_citation&citation_for_view=%s", dt$pubid) - dt$author <- sapply(dt$author, function(x) { - k <- strsplit(x, ", ")[[1]] - if (length(k) > 6) { - k <- paste0(k[1:3], collapse = ", ") - k <- paste(k, "et al.", collapse = " ") - } else { - n <- length(k) - j <- paste0(k[1:(n - 1)], collapse = ", ") - k <- paste(c(j, "&", k[n]), collapse = " ") - } - k - }) - dt$journal <- ifelse( - dt$journal == "", - "", - sprintf("%s %s", dt$journal, dt$number) - ) - dt <- dt[, c("year", "author", "title", "journal", "pubid")] - row.names(dt) <- NULL - - dir.create(dirname(file), showWarnings = FALSE, recursive = TRUE) - cat("writing to: ", normalizePath(file), "\n") - jsonlite::write_json(dt, file, pretty = TRUE, auto_unbox = TRUE) -} - - -team <- list.files( - "content/team", - recursive = TRUE, - pattern = "^index.en.md$", - full.names = TRUE -) - -ids <- team |> - lapply(readLines) |> - sapply(function(x) { - # only process non-drafted profiles - if (length(grep("draft: true", x)) > 0) { - return() - } - j <- x[grep("gscholar", x)] |> - strsplit('\"') - if (length(j) > 0) j[[1]][2] - }) - -j <- mapply( - get_pubs, - id = ids, - file = paste0("data/team/pubs/", basename(dirname(team)), ".json") -) diff --git a/themes/capro-tw/archetypes/team/index.en.md b/themes/capro-tw/archetypes/team/index.en.md new file mode 100644 index 00000000..cfbfdd20 --- /dev/null +++ b/themes/capro-tw/archetypes/team/index.en.md @@ -0,0 +1,21 @@ +--- +title : "" # Name +designation : + - list of + - skills +social : # themify icon pack : https://themify.me/themify-icons or fontawesome (https://fontawesome.com/icons) + - icon : ti-twitter-alt + link : "" + - icon : ti-github + link : "" + - icon: "fa-brands fa-orcid" + link: "" + - icon: "fa-brands fa-mastodon" + link: "" +--- + +Text about person. Short'ish. +Image file in this folder will be used as profile image. + + +if its long, any text below the more tag will only appear in the full profile, not in the preview shorts. \ No newline at end of file diff --git a/themes/capro-tw/archetypes/team/index.no.md b/themes/capro-tw/archetypes/team/index.no.md new file mode 100644 index 00000000..14cb7223 --- /dev/null +++ b/themes/capro-tw/archetypes/team/index.no.md @@ -0,0 +1,23 @@ +--- +title : "" # Navn på person +designation : + - liste + - med én + - eller flere ferdigheter +social : # Kan bruke både themify (https://themify.me/themify-icons) iconer og fontawesome (https://fontawesome.com/icons) + - icon : ti-twitter-alt + link : "" + - icon : ti-github + link : "" + - icon: "fa-brands fa-orcid" + link: "" + - icon: "fa-brands fa-mastodon" + link: "" +--- + +Tekst om personen går her. Kort. +Bilde i denne mappen brukes som profil bilde. + + +Om teksten er lang, så kan du legge til under denne tag'en. +Alt under denne vil synes i den fulle profilen, men ikke i de korte oppsummeringene på forsiden. diff --git a/themes/capro-tw/assets/css/components/buttons.css b/themes/capro-tw/assets/css/components/buttons.css new file mode 100644 index 00000000..720ff74e --- /dev/null +++ b/themes/capro-tw/assets/css/components/buttons.css @@ -0,0 +1,40 @@ +@layer components { + .btn { + @apply inline-block px-8 py-3 text-sm font-semibold uppercase tracking-wider; + transition: all var(--transition-fast); + } + + .btn-primary { + background-color: var(--color-primary-dark); + color: #fff; + } + + .btn-primary:hover { + background-color: var(--color-primary); + color: #fff; + } + + .btn-outline { + @apply border; + border-color: var(--color-border); + color: var(--color-body); + } + + .btn-outline:hover { + border-color: var(--color-primary); + color: var(--color-primary); + } + + .btn-hero { + @apply px-14 py-5 text-lg font-bold uppercase tracking-widest; + background-color: var(--color-primary); + border: 2px solid var(--color-primary); + color: #fff; + } + + .btn-hero:hover { + background-color: transparent; + border-color: #fff; + color: #fff; + } +} diff --git a/themes/capro-tw/assets/css/components/footer-waves.css b/themes/capro-tw/assets/css/components/footer-waves.css new file mode 100644 index 00000000..114c80ac --- /dev/null +++ b/themes/capro-tw/assets/css/components/footer-waves.css @@ -0,0 +1,16 @@ +@layer components { + .footer-waves { + position: relative; + overflow: hidden; + height: 60px; + background-color: var(--color-dark); + } + + .footer-waves svg { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + } +} diff --git a/themes/capro-tw/assets/css/components/layout.css b/themes/capro-tw/assets/css/components/layout.css new file mode 100644 index 00000000..aad48d4f --- /dev/null +++ b/themes/capro-tw/assets/css/components/layout.css @@ -0,0 +1,64 @@ +@layer components { + .section { + padding-top: 6rem; + padding-bottom: 6rem; + } + + @media (max-width: 768px) { + .section { + padding-top: 3rem; + padding-bottom: 3rem; + } + } + + .section-title { + @apply text-center mb-12; + } + + .section-title h2 { + @apply text-4xl font-bold capitalize; + color: var(--color-body); + } + + .section-title .accent { + color: var(--color-primary-text); + } + + .border-accent { + border-top: 2px solid var(--color-border); + height: 1px; + margin: 15px auto 0; + position: relative; + width: 30%; + } + + .border-accent::before { + content: ''; + position: absolute; + top: -4px; + left: 50%; + margin-left: -25px; + width: 50px; + height: 6px; + background-color: var(--color-primary); + } + + .bg-dark { + background-color: var(--color-dark); + } + + .bg-grey { + background-color: var(--color-grey); + } + + .reveal { + opacity: 0; + transform: translateY(24px); + transition: opacity var(--transition-slow), transform var(--transition-slow); + } + + .reveal.visible { + opacity: 1; + transform: translateY(0); + } +} diff --git a/themes/capro-tw/assets/css/components/nav.css b/themes/capro-tw/assets/css/components/nav.css new file mode 100644 index 00000000..3fcffd78 --- /dev/null +++ b/themes/capro-tw/assets/css/components/nav.css @@ -0,0 +1,48 @@ +@layer components { + .site-nav { + @apply sticky top-0 z-50; + background-color: var(--color-dark); + border-bottom: 1px solid transparent; + transition: border-color var(--transition-base), box-shadow var(--transition-base); + } + + .site-nav.nav-scrolled { + border-bottom-color: var(--color-border); + box-shadow: 0 2px 12px rgba(0, 0, 0, 0.3); + } + + .site-nav a { + @apply text-sm font-medium uppercase tracking-wider; + color: var(--color-body); + transition: color var(--transition-fast); + } + + .site-nav a:hover, + .site-nav a.active { + color: var(--color-primary); + } + + .lang-select { + @apply text-sm border-0 cursor-pointer; + appearance: none; + background: var(--color-dark); + color: var(--color-body); + padding: 4px 24px 4px 8px; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23d0d2d4' stroke-width='2' fill='none'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: right 6px center; + } + + .footer-social-icon { + @apply w-12 h-12 flex items-center justify-center text-lg rounded-full; + color: var(--color-light); + border: 1px solid var(--color-border); + transition: all var(--transition-base); + } + + .footer-social-icon:hover { + background-color: var(--color-primary); + border-color: var(--color-primary); + color: #fff; + } +} diff --git a/themes/capro-tw/assets/css/components/pubs.css b/themes/capro-tw/assets/css/components/pubs.css new file mode 100644 index 00000000..f439f751 --- /dev/null +++ b/themes/capro-tw/assets/css/components/pubs.css @@ -0,0 +1,70 @@ +@layer components { + .pubs-table { + @apply w-full text-sm; + color: var(--color-body); + } + + .pubs-table th { + @apply pb-3 text-left font-medium text-xs uppercase tracking-wider; + color: var(--color-body); + border-bottom: 1px solid var(--color-border); + } + + .pubs-table td { + @apply py-3 align-top; + border-bottom: 1px solid var(--color-border); + } + + .pubs-table .pub-year { + @apply font-medium; + font-family: var(--font-sans); + color: var(--color-secondary); + } + + .pubs-table .pub-authors { + @apply text-xs leading-relaxed; + color: var(--color-muted); + } + + .pubs-table .pub-title a { + color: var(--color-secondary); + transition: color var(--transition-fast); + } + + .pubs-table .pub-title a:hover { + color: var(--color-primary); + } + + .pubs-table .pub-journal { + @apply text-xs italic; + color: var(--color-muted); + } + + .pubs-table tbody tr:hover td { + color: var(--color-body); + } + + .year-select { + @apply text-sm font-semibold cursor-pointer; + appearance: none; + background: var(--color-dark); + color: var(--color-body); + border: 1px solid var(--color-border); + border-radius: 4px; + padding: 8px 36px 8px 14px; + transition: border-color var(--transition-fast); + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23d0d2d4' stroke-width='2' fill='none'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: right 12px center; + } + + .year-select:hover, + .year-select:focus { + border-color: var(--color-primary); + } + + .year-select option { + background: var(--color-dark); + color: var(--color-body); + } +} diff --git a/themes/capro-tw/assets/css/components/sections.css b/themes/capro-tw/assets/css/components/sections.css new file mode 100644 index 00000000..e8d7df31 --- /dev/null +++ b/themes/capro-tw/assets/css/components/sections.css @@ -0,0 +1,294 @@ +@layer components { + /* About */ + .about-block { + @apply h-full; + background: var(--color-dark); + padding: 40px 32px; + border-bottom: 2px solid transparent; + transition: border-color var(--transition-base); + } + + .about-block:hover { + border-bottom-color: var(--color-primary); + } + + .about-block:hover .icon-box { + transform: translateY(-10px); + } + + .about-block h3 { + color: var(--color-secondary); + } + + .icon-box { + position: relative; + width: 160px; + height: 92px; + margin: 46px auto 60px; + padding: 20px 0; + border-left: 2px solid var(--color-secondary); + border-right: 2px solid var(--color-secondary); + background-color: transparent; + font-size: 36px; + color: var(--color-light); + display: flex; + align-items: center; + justify-content: center; + transition: transform var(--transition-base); + z-index: 1; + } + + .icon-box::before, + .icon-box::after { + content: ""; + position: absolute; + z-index: -1; + width: 113.14px; + height: 113.14px; + background-color: var(--color-dark); + left: 20.43px; + transform: scaleY(0.5774) rotate(-45deg); + } + + .icon-box::before { + top: -56.57px; + border-top: 2px solid var(--color-secondary); + border-right: 2px solid var(--color-secondary); + } + + .icon-box::after { + bottom: -56.57px; + border-bottom: 2px solid var(--color-secondary); + border-left: 2px solid var(--color-secondary); + } + + /* Services */ + .service-block { + @apply text-center h-full; + padding: 60px 32px; + background-color: var(--color-dark); + border-left: 1px solid var(--color-border); + border-top: 1px solid var(--color-border); + box-shadow: 2px 2px 5px rgba(44, 44, 44, 0.3), 13px 13px 0 rgba(255, 255, 255, 0.12); + } + + .service-block i { + @apply mb-6 block; + font-size: 50px; + color: var(--color-light); + } + + .service-block h3 { + @apply text-xl font-medium mb-3; + color: var(--color-secondary); + } + + /* Skills */ + .progress-bar-track { + @apply w-full rounded-full; + height: 6px; + background-color: var(--color-border); + } + + .progress-bar-fill { + @apply h-full rounded-full; + background-color: var(--color-primary); + transition: width 0.8s ease; + } + + /* Counters */ + .counter-card { + width: 200px; + height: 200px; + padding: 32px 24px; + background-color: var(--color-dark); + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + } + + .counter-card i { + @apply mb-3 block; + font-size: 40px; + color: var(--color-light); + } + + .counter-card .counter-value { + font-size: 48px; + font-weight: 700; + color: var(--color-secondary); + } + + .counter-card h3 { + @apply mt-2; + font-size: 0.9rem; + color: var(--color-body); + } + + /* Pricing */ + .price-card { + @apply h-full; + padding: 40px 32px; + background-color: var(--color-dark); + border: 1px solid var(--color-border); + transition: border-color var(--transition-base); + } + + .price-card h3 { + color: var(--color-secondary); + margin-bottom: 24px; + } + + .price-card table td { + padding: 6px 8px; + } + + .price-card:hover { + border-color: var(--color-primary); + } + + /* Testimonials */ + .testimonial-scroll { + @apply flex gap-6 overflow-x-auto items-stretch; + scroll-snap-type: x mandatory; + -webkit-overflow-scrolling: touch; + scrollbar-width: thin; + scrollbar-color: var(--color-light) transparent; + padding-bottom: 16px; + } + + .testimonial-scroll::-webkit-scrollbar { + height: 6px; + } + + .testimonial-scroll::-webkit-scrollbar-track { + background: transparent; + } + + .testimonial-scroll::-webkit-scrollbar-thumb { + background: var(--color-light); + border-radius: 3px; + } + + .testimonial-nav { + @apply absolute top-1/2 -translate-y-1/2 z-10 w-10 h-10 flex items-center justify-center; + background: var(--color-dark); + border: 1px solid var(--color-border); + color: var(--color-body); + transition: all var(--transition-fast); + cursor: pointer; + } + + .testimonial-nav:hover { + border-color: var(--color-primary); + color: var(--color-primary); + } + + .testimonial-nav-left { + left: -20px; + } + + .testimonial-nav-right { + right: -20px; + } + + @media (max-width: 768px) { + .testimonial-nav { display: none; } + } + + .testimonial-modern { + @apply flex flex-col flex-shrink-0; + width: 360px; + padding: 32px; + background-color: var(--color-grey); + border: 1px solid var(--color-border); + scroll-snap-align: start; + transition: border-color var(--transition-base); + } + + .testimonial-modern:hover { + border-color: var(--color-primary); + } + + .testimonial-modern blockquote { + font-size: 1rem; + line-height: 1.7; + } + + .testimonial-modern blockquote p { + margin: 0; + } + + /* Contact */ + .contact-icon { + @apply mr-4 mt-1; + font-size: 20px; + color: var(--color-primary); + } + + /* Portfolio */ + .portfolio-card { + border: 1px solid var(--color-border); + background-color: var(--color-dark); + transition: border-color var(--transition-base); + } + + .portfolio-card:hover { + border-color: var(--color-primary); + } + + .portfolio-card .portfolio-img { + @apply relative overflow-hidden; + background: #fff; + padding: 40px; + height: 16rem; + display: flex; + align-items: center; + justify-content: center; + } + + .portfolio-card .portfolio-img img { + max-height: 100%; + width: auto; + object-fit: contain; + } + + .portfolio-card .portfolio-overlay { + @apply absolute inset-0 flex items-center justify-center; + opacity: 0; + background: rgba(255, 255, 255, 0.92); + transition: opacity var(--transition-base); + } + + .portfolio-card:hover .portfolio-overlay { + opacity: 1; + } + + .portfolio-card .portfolio-overlay .search-circle { + width: 50px; + height: 50px; + border-radius: 50%; + background-color: var(--color-primary); + color: #fff; + display: flex; + align-items: center; + justify-content: center; + font-size: 20px; + } + + .portfolio-card .portfolio-meta { + padding: 20px; + } + + .portfolio-card .portfolio-meta h3 { + font-size: 1rem; + color: var(--color-secondary); + } + + .portfolio-card .portfolio-meta p { + font-size: 0.85rem; + color: var(--color-light); + margin-top: 8px; + } +} diff --git a/themes/capro-tw/assets/css/components/team.css b/themes/capro-tw/assets/css/components/team.css new file mode 100644 index 00000000..9340cc1c --- /dev/null +++ b/themes/capro-tw/assets/css/components/team.css @@ -0,0 +1,68 @@ +@layer components { + .team-card { + @apply overflow-hidden h-full flex flex-col; + background-color: transparent; + border: 1px solid var(--color-border); + transition: border-color var(--transition-base); + } + + .team-card:hover { + border-color: var(--color-primary); + } + + .team-photo { + @apply relative overflow-hidden; + } + + .team-photo img { + @apply w-full; + transition: transform var(--transition-base), filter var(--transition-base); + } + + .team-photo:hover img { + transform: scale(1.05); + filter: brightness(1.15); + } + + @media (prefers-contrast: more) { + .team-photo:hover img { + filter: none; + } + } + + .team-photo .social-overlay { + @apply absolute inset-0 flex items-end justify-center pb-5; + opacity: 0; + background: linear-gradient(to top, var(--color-dark) 0%, transparent 60%); + transition: opacity var(--transition-base); + } + + .team-card:hover .social-overlay { + opacity: 1; + } + + .social-overlay a { + @apply inline-block w-9 h-9 leading-9 text-center text-lg mx-1; + color: var(--color-body); + transition: color var(--transition-fast); + } + + .social-overlay a:hover { + color: var(--color-primary); + } + + .team-meta { + @apply flex-1; + padding: 16px; + background-color: var(--color-dark); + } + + .team-meta h3 { + @apply text-lg mb-1; + } + + .team-meta span { + @apply text-xs; + color: var(--color-light); + } +} diff --git a/themes/capro-tw/assets/css/main.css b/themes/capro-tw/assets/css/main.css new file mode 100644 index 00000000..bdc5f9bb --- /dev/null +++ b/themes/capro-tw/assets/css/main.css @@ -0,0 +1,125 @@ +@import "tailwindcss"; + +@source "../../layouts"; + +@theme { + --color-primary: #c04545; + --color-primary-text: #E57575; + --color-primary-dark: #b84444; + --color-secondary: #85bfbf; + --color-tertiary: #D4A843; + --color-dark: #20242b; + --color-grey: #2A2F36; + --color-light: #8a8e93; + --color-body: #d0d2d4; + --color-muted: #9a9da0; + --color-border: rgba(236, 239, 241, 0.12); + + --font-sans: 'Space Grotesk', sans-serif; + --font-serif: 'Spectral', serif; + + --shadow-card: 2px 2px 5px rgba(0, 0, 0, 0.3), 10px 10px 0 rgba(255, 255, 255, 0.04); + --shadow-card-hover: 0 5px 30px rgba(0, 0, 0, 0.25); + + --transition-fast: 0.2s ease; + --transition-base: 0.3s ease; + --transition-slow: 0.6s ease; +} + +[x-cloak] { display: none !important; } + +@layer base { + @font-face { + font-family: 'Space Grotesk'; + src: url('/webfonts/google-fonts/space-grotesk/space-grotesk-latin-300-normal.woff2') format('woff2'); + font-weight: 300; + font-display: swap; + } + @font-face { + font-family: 'Space Grotesk'; + src: url('/webfonts/google-fonts/space-grotesk/space-grotesk-latin-400-normal.woff2') format('woff2'); + font-weight: 400; + font-display: swap; + } + @font-face { + font-family: 'Space Grotesk'; + src: url('/webfonts/google-fonts/space-grotesk/space-grotesk-latin-500-normal.woff2') format('woff2'); + font-weight: 500; + font-display: swap; + } + @font-face { + font-family: 'Spectral'; + src: url('/webfonts/google-fonts/spectral/spectral-latin-300-normal.woff2') format('woff2'); + font-weight: 300; + font-display: swap; + } + + html { + scroll-behavior: smooth; + background-color: var(--color-grey); + color: var(--color-body); + } + + @media (prefers-reduced-motion: reduce) { + html { scroll-behavior: auto; } + *, *::before, *::after { + animation-duration: 0.01ms !important; + transition-duration: 0.01ms !important; + } + } + + body { + font-family: var(--font-sans); + font-size: 18px; + line-height: 1.6; + -webkit-font-smoothing: antialiased; + } + + @media (min-width: 768px) { + body { font-size: 20px; } + } + + h1, h2, h3, h4, h5, h6 { + font-family: var(--font-sans); + color: var(--color-secondary); + line-height: 1.2; + } + + h1 { font-weight: 300; } + h2 { font-weight: 500; } + h3, h4, h5, h6 { font-weight: 400; } + + p { + font-family: var(--font-serif); + color: var(--color-body); + line-height: 1.7; + } + + a { + color: var(--color-secondary); + text-decoration: none; + transition: color var(--transition-fast); + } + + a:hover { + color: var(--color-body); + } + + :focus-visible { + outline: 2px solid var(--color-primary); + outline-offset: 2px; + } + + ::selection { + background: var(--color-primary); + color: var(--color-body); + } +} + +@import "./components/layout.css"; +@import "./components/nav.css"; +@import "./components/buttons.css"; +@import "./components/sections.css"; +@import "./components/team.css"; +@import "./components/pubs.css"; +@import "./components/footer-waves.css"; diff --git a/themes/capro-tw/assets/css/themify-icons.css b/themes/capro-tw/assets/css/themify-icons.css new file mode 100644 index 00000000..bf30c532 --- /dev/null +++ b/themes/capro-tw/assets/css/themify-icons.css @@ -0,0 +1 @@ +@font-face{font-family:themify;display:swap;src:url(/webfonts/themify/themify.eot?-fvbane);src:url(/webfonts/themify/themify.eot?#iefix-fvbane) format('embedded-opentype'),url(/webfonts/themify/themify.woff?-fvbane) format('woff'),url(/webfonts/themify/themify.ttf?-fvbane) format('truetype'),url(/webfonts/themify/themify.svg?-fvbane#themify) format('svg');font-weight:400;font-style:normal}[class*=" ti-"],[class^=ti-]{font-family:themify;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ti-wand:before{content:"\e600"}.ti-volume:before{content:"\e601"}.ti-user:before{content:"\e602"}.ti-unlock:before{content:"\e603"}.ti-unlink:before{content:"\e604"}.ti-trash:before{content:"\e605"}.ti-thought:before{content:"\e606"}.ti-target:before{content:"\e607"}.ti-tag:before{content:"\e608"}.ti-tablet:before{content:"\e609"}.ti-star:before{content:"\e60a"}.ti-spray:before{content:"\e60b"}.ti-signal:before{content:"\e60c"}.ti-shopping-cart:before{content:"\e60d"}.ti-shopping-cart-full:before{content:"\e60e"}.ti-settings:before{content:"\e60f"}.ti-search:before{content:"\e610"}.ti-zoom-in:before{content:"\e611"}.ti-zoom-out:before{content:"\e612"}.ti-cut:before{content:"\e613"}.ti-ruler:before{content:"\e614"}.ti-ruler-pencil:before{content:"\e615"}.ti-ruler-alt:before{content:"\e616"}.ti-bookmark:before{content:"\e617"}.ti-bookmark-alt:before{content:"\e618"}.ti-reload:before{content:"\e619"}.ti-plus:before{content:"\e61a"}.ti-pin:before{content:"\e61b"}.ti-pencil:before{content:"\e61c"}.ti-pencil-alt:before{content:"\e61d"}.ti-paint-roller:before{content:"\e61e"}.ti-paint-bucket:before{content:"\e61f"}.ti-na:before{content:"\e620"}.ti-mobile:before{content:"\e621"}.ti-minus:before{content:"\e622"}.ti-medall:before{content:"\e623"}.ti-medall-alt:before{content:"\e624"}.ti-marker:before{content:"\e625"}.ti-marker-alt:before{content:"\e626"}.ti-arrow-up:before{content:"\e627"}.ti-arrow-right:before{content:"\e628"}.ti-arrow-left:before{content:"\e629"}.ti-arrow-down:before{content:"\e62a"}.ti-lock:before{content:"\e62b"}.ti-location-arrow:before{content:"\e62c"}.ti-link:before{content:"\e62d"}.ti-layout:before{content:"\e62e"}.ti-layers:before{content:"\e62f"}.ti-layers-alt:before{content:"\e630"}.ti-key:before{content:"\e631"}.ti-import:before{content:"\e632"}.ti-image:before{content:"\e633"}.ti-heart:before{content:"\e634"}.ti-heart-broken:before{content:"\e635"}.ti-hand-stop:before{content:"\e636"}.ti-hand-open:before{content:"\e637"}.ti-hand-drag:before{content:"\e638"}.ti-folder:before{content:"\e639"}.ti-flag:before{content:"\e63a"}.ti-flag-alt:before{content:"\e63b"}.ti-flag-alt-2:before{content:"\e63c"}.ti-eye:before{content:"\e63d"}.ti-export:before{content:"\e63e"}.ti-exchange-vertical:before{content:"\e63f"}.ti-desktop:before{content:"\e640"}.ti-cup:before{content:"\e641"}.ti-crown:before{content:"\e642"}.ti-comments:before{content:"\e643"}.ti-comment:before{content:"\e644"}.ti-comment-alt:before{content:"\e645"}.ti-close:before{content:"\e646"}.ti-clip:before{content:"\e647"}.ti-angle-up:before{content:"\e648"}.ti-angle-right:before{content:"\e649"}.ti-angle-left:before{content:"\e64a"}.ti-angle-down:before{content:"\e64b"}.ti-check:before{content:"\e64c"}.ti-check-box:before{content:"\e64d"}.ti-camera:before{content:"\e64e"}.ti-announcement:before{content:"\e64f"}.ti-brush:before{content:"\e650"}.ti-briefcase:before{content:"\e651"}.ti-bolt:before{content:"\e652"}.ti-bolt-alt:before{content:"\e653"}.ti-blackboard:before{content:"\e654"}.ti-bag:before{content:"\e655"}.ti-move:before{content:"\e656"}.ti-arrows-vertical:before{content:"\e657"}.ti-arrows-horizontal:before{content:"\e658"}.ti-fullscreen:before{content:"\e659"}.ti-arrow-top-right:before{content:"\e65a"}.ti-arrow-top-left:before{content:"\e65b"}.ti-arrow-circle-up:before{content:"\e65c"}.ti-arrow-circle-right:before{content:"\e65d"}.ti-arrow-circle-left:before{content:"\e65e"}.ti-arrow-circle-down:before{content:"\e65f"}.ti-angle-double-up:before{content:"\e660"}.ti-angle-double-right:before{content:"\e661"}.ti-angle-double-left:before{content:"\e662"}.ti-angle-double-down:before{content:"\e663"}.ti-zip:before{content:"\e664"}.ti-world:before{content:"\e665"}.ti-wheelchair:before{content:"\e666"}.ti-view-list:before{content:"\e667"}.ti-view-list-alt:before{content:"\e668"}.ti-view-grid:before{content:"\e669"}.ti-uppercase:before{content:"\e66a"}.ti-upload:before{content:"\e66b"}.ti-underline:before{content:"\e66c"}.ti-truck:before{content:"\e66d"}.ti-timer:before{content:"\e66e"}.ti-ticket:before{content:"\e66f"}.ti-thumb-up:before{content:"\e670"}.ti-thumb-down:before{content:"\e671"}.ti-text:before{content:"\e672"}.ti-stats-up:before{content:"\e673"}.ti-stats-down:before{content:"\e674"}.ti-split-v:before{content:"\e675"}.ti-split-h:before{content:"\e676"}.ti-smallcap:before{content:"\e677"}.ti-shine:before{content:"\e678"}.ti-shift-right:before{content:"\e679"}.ti-shift-left:before{content:"\e67a"}.ti-shield:before{content:"\e67b"}.ti-notepad:before{content:"\e67c"}.ti-server:before{content:"\e67d"}.ti-quote-right:before{content:"\e67e"}.ti-quote-left:before{content:"\e67f"}.ti-pulse:before{content:"\e680"}.ti-printer:before{content:"\e681"}.ti-power-off:before{content:"\e682"}.ti-plug:before{content:"\e683"}.ti-pie-chart:before{content:"\e684"}.ti-paragraph:before{content:"\e685"}.ti-panel:before{content:"\e686"}.ti-package:before{content:"\e687"}.ti-music:before{content:"\e688"}.ti-music-alt:before{content:"\e689"}.ti-mouse:before{content:"\e68a"}.ti-mouse-alt:before{content:"\e68b"}.ti-money:before{content:"\e68c"}.ti-microphone:before{content:"\e68d"}.ti-menu:before{content:"\e68e"}.ti-menu-alt:before{content:"\e68f"}.ti-map:before{content:"\e690"}.ti-map-alt:before{content:"\e691"}.ti-loop:before{content:"\e692"}.ti-location-pin:before{content:"\e693"}.ti-list:before{content:"\e694"}.ti-light-bulb:before{content:"\e695"}.ti-Italic:before{content:"\e696"}.ti-info:before{content:"\e697"}.ti-infinite:before{content:"\e698"}.ti-id-badge:before{content:"\e699"}.ti-hummer:before{content:"\e69a"}.ti-home:before{content:"\e69b"}.ti-help:before{content:"\e69c"}.ti-headphone:before{content:"\e69d"}.ti-harddrives:before{content:"\e69e"}.ti-harddrive:before{content:"\e69f"}.ti-gift:before{content:"\e6a0"}.ti-game:before{content:"\e6a1"}.ti-filter:before{content:"\e6a2"}.ti-files:before{content:"\e6a3"}.ti-file:before{content:"\e6a4"}.ti-eraser:before{content:"\e6a5"}.ti-envelope:before{content:"\e6a6"}.ti-download:before{content:"\e6a7"}.ti-direction:before{content:"\e6a8"}.ti-direction-alt:before{content:"\e6a9"}.ti-dashboard:before{content:"\e6aa"}.ti-control-stop:before{content:"\e6ab"}.ti-control-shuffle:before{content:"\e6ac"}.ti-control-play:before{content:"\e6ad"}.ti-control-pause:before{content:"\e6ae"}.ti-control-forward:before{content:"\e6af"}.ti-control-backward:before{content:"\e6b0"}.ti-cloud:before{content:"\e6b1"}.ti-cloud-up:before{content:"\e6b2"}.ti-cloud-down:before{content:"\e6b3"}.ti-clipboard:before{content:"\e6b4"}.ti-car:before{content:"\e6b5"}.ti-calendar:before{content:"\e6b6"}.ti-book:before{content:"\e6b7"}.ti-bell:before{content:"\e6b8"}.ti-basketball:before{content:"\e6b9"}.ti-bar-chart:before{content:"\e6ba"}.ti-bar-chart-alt:before{content:"\e6bb"}.ti-back-right:before{content:"\e6bc"}.ti-back-left:before{content:"\e6bd"}.ti-arrows-corner:before{content:"\e6be"}.ti-archive:before{content:"\e6bf"}.ti-anchor:before{content:"\e6c0"}.ti-align-right:before{content:"\e6c1"}.ti-align-left:before{content:"\e6c2"}.ti-align-justify:before{content:"\e6c3"}.ti-align-center:before{content:"\e6c4"}.ti-alert:before{content:"\e6c5"}.ti-alarm-clock:before{content:"\e6c6"}.ti-agenda:before{content:"\e6c7"}.ti-write:before{content:"\e6c8"}.ti-window:before{content:"\e6c9"}.ti-widgetized:before{content:"\e6ca"}.ti-widget:before{content:"\e6cb"}.ti-widget-alt:before{content:"\e6cc"}.ti-wallet:before{content:"\e6cd"}.ti-video-clapper:before{content:"\e6ce"}.ti-video-camera:before{content:"\e6cf"}.ti-vector:before{content:"\e6d0"}.ti-themify-logo:before{content:"\e6d1"}.ti-themify-favicon:before{content:"\e6d2"}.ti-themify-favicon-alt:before{content:"\e6d3"}.ti-support:before{content:"\e6d4"}.ti-stamp:before{content:"\e6d5"}.ti-split-v-alt:before{content:"\e6d6"}.ti-slice:before{content:"\e6d7"}.ti-shortcode:before{content:"\e6d8"}.ti-shift-right-alt:before{content:"\e6d9"}.ti-shift-left-alt:before{content:"\e6da"}.ti-ruler-alt-2:before{content:"\e6db"}.ti-receipt:before{content:"\e6dc"}.ti-pin2:before{content:"\e6dd"}.ti-pin-alt:before{content:"\e6de"}.ti-pencil-alt2:before{content:"\e6df"}.ti-palette:before{content:"\e6e0"}.ti-more:before{content:"\e6e1"}.ti-more-alt:before{content:"\e6e2"}.ti-microphone-alt:before{content:"\e6e3"}.ti-magnet:before{content:"\e6e4"}.ti-line-double:before{content:"\e6e5"}.ti-line-dotted:before{content:"\e6e6"}.ti-line-dashed:before{content:"\e6e7"}.ti-layout-width-full:before{content:"\e6e8"}.ti-layout-width-default:before{content:"\e6e9"}.ti-layout-width-default-alt:before{content:"\e6ea"}.ti-layout-tab:before{content:"\e6eb"}.ti-layout-tab-window:before{content:"\e6ec"}.ti-layout-tab-v:before{content:"\e6ed"}.ti-layout-tab-min:before{content:"\e6ee"}.ti-layout-slider:before{content:"\e6ef"}.ti-layout-slider-alt:before{content:"\e6f0"}.ti-layout-sidebar-right:before{content:"\e6f1"}.ti-layout-sidebar-none:before{content:"\e6f2"}.ti-layout-sidebar-left:before{content:"\e6f3"}.ti-layout-placeholder:before{content:"\e6f4"}.ti-layout-menu:before{content:"\e6f5"}.ti-layout-menu-v:before{content:"\e6f6"}.ti-layout-menu-separated:before{content:"\e6f7"}.ti-layout-menu-full:before{content:"\e6f8"}.ti-layout-media-right-alt:before{content:"\e6f9"}.ti-layout-media-right:before{content:"\e6fa"}.ti-layout-media-overlay:before{content:"\e6fb"}.ti-layout-media-overlay-alt:before{content:"\e6fc"}.ti-layout-media-overlay-alt-2:before{content:"\e6fd"}.ti-layout-media-left-alt:before{content:"\e6fe"}.ti-layout-media-left:before{content:"\e6ff"}.ti-layout-media-center-alt:before{content:"\e700"}.ti-layout-media-center:before{content:"\e701"}.ti-layout-list-thumb:before{content:"\e702"}.ti-layout-list-thumb-alt:before{content:"\e703"}.ti-layout-list-post:before{content:"\e704"}.ti-layout-list-large-image:before{content:"\e705"}.ti-layout-line-solid:before{content:"\e706"}.ti-layout-grid4:before{content:"\e707"}.ti-layout-grid3:before{content:"\e708"}.ti-layout-grid2:before{content:"\e709"}.ti-layout-grid2-thumb:before{content:"\e70a"}.ti-layout-cta-right:before{content:"\e70b"}.ti-layout-cta-left:before{content:"\e70c"}.ti-layout-cta-center:before{content:"\e70d"}.ti-layout-cta-btn-right:before{content:"\e70e"}.ti-layout-cta-btn-left:before{content:"\e70f"}.ti-layout-column4:before{content:"\e710"}.ti-layout-column3:before{content:"\e711"}.ti-layout-column2:before{content:"\e712"}.ti-layout-accordion-separated:before{content:"\e713"}.ti-layout-accordion-merged:before{content:"\e714"}.ti-layout-accordion-list:before{content:"\e715"}.ti-ink-pen:before{content:"\e716"}.ti-info-alt:before{content:"\e717"}.ti-help-alt:before{content:"\e718"}.ti-headphone-alt:before{content:"\e719"}.ti-hand-point-up:before{content:"\e71a"}.ti-hand-point-right:before{content:"\e71b"}.ti-hand-point-left:before{content:"\e71c"}.ti-hand-point-down:before{content:"\e71d"}.ti-gallery:before{content:"\e71e"}.ti-face-smile:before{content:"\e71f"}.ti-face-sad:before{content:"\e720"}.ti-credit-card:before{content:"\e721"}.ti-control-skip-forward:before{content:"\e722"}.ti-control-skip-backward:before{content:"\e723"}.ti-control-record:before{content:"\e724"}.ti-control-eject:before{content:"\e725"}.ti-comments-smiley:before{content:"\e726"}.ti-brush-alt:before{content:"\e727"}.ti-youtube:before{content:"\e728"}.ti-vimeo:before{content:"\e729"}.ti-twitter:before{content:"\e72a"}.ti-time:before{content:"\e72b"}.ti-tumblr:before{content:"\e72c"}.ti-skype:before{content:"\e72d"}.ti-share:before{content:"\e72e"}.ti-share-alt:before{content:"\e72f"}.ti-rocket:before{content:"\e730"}.ti-pinterest:before{content:"\e731"}.ti-new-window:before{content:"\e732"}.ti-microsoft:before{content:"\e733"}.ti-list-ol:before{content:"\e734"}.ti-linkedin:before{content:"\e735"}.ti-layout-sidebar-2:before{content:"\e736"}.ti-layout-grid4-alt:before{content:"\e737"}.ti-layout-grid3-alt:before{content:"\e738"}.ti-layout-grid2-alt:before{content:"\e739"}.ti-layout-column4-alt:before{content:"\e73a"}.ti-layout-column3-alt:before{content:"\e73b"}.ti-layout-column2-alt:before{content:"\e73c"}.ti-instagram:before{content:"\e73d"}.ti-google:before{content:"\e73e"}.ti-github:before{content:"\e73f"}.ti-flickr:before{content:"\e740"}.ti-facebook:before{content:"\e741"}.ti-dropbox:before{content:"\e742"}.ti-dribbble:before{content:"\e743"}.ti-apple:before{content:"\e744"}.ti-android:before{content:"\e745"}.ti-save:before{content:"\e746"}.ti-save-alt:before{content:"\e747"}.ti-yahoo:before{content:"\e748"}.ti-wordpress:before{content:"\e749"}.ti-vimeo-alt:before{content:"\e74a"}.ti-twitter-alt:before{content:"\e74b"}.ti-tumblr-alt:before{content:"\e74c"}.ti-trello:before{content:"\e74d"}.ti-stack-overflow:before{content:"\e74e"}.ti-soundcloud:before{content:"\e74f"}.ti-sharethis:before{content:"\e750"}.ti-sharethis-alt:before{content:"\e751"}.ti-reddit:before{content:"\e752"}.ti-pinterest-alt:before{content:"\e753"}.ti-microsoft-alt:before{content:"\e754"}.ti-linux:before{content:"\e755"}.ti-jsfiddle:before{content:"\e756"}.ti-joomla:before{content:"\e757"}.ti-html5:before{content:"\e758"}.ti-flickr-alt:before{content:"\e759"}.ti-email:before{content:"\e75a"}.ti-drupal:before{content:"\e75b"}.ti-dropbox-alt:before{content:"\e75c"}.ti-css3:before{content:"\e75d"}.ti-rss:before{content:"\e75e"}.ti-rss-alt:before{content:"\e75f"} \ No newline at end of file diff --git a/themes/capro-tw/assets/css/vendor/leaflet.css b/themes/capro-tw/assets/css/vendor/leaflet.css new file mode 100644 index 00000000..2961b761 --- /dev/null +++ b/themes/capro-tw/assets/css/vendor/leaflet.css @@ -0,0 +1,661 @@ +/* required styles */ + +.leaflet-pane, +.leaflet-tile, +.leaflet-marker-icon, +.leaflet-marker-shadow, +.leaflet-tile-container, +.leaflet-pane > svg, +.leaflet-pane > canvas, +.leaflet-zoom-box, +.leaflet-image-layer, +.leaflet-layer { + position: absolute; + left: 0; + top: 0; + } +.leaflet-container { + overflow: hidden; + } +.leaflet-tile, +.leaflet-marker-icon, +.leaflet-marker-shadow { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + -webkit-user-drag: none; + } +/* Prevents IE11 from highlighting tiles in blue */ +.leaflet-tile::selection { + background: transparent; +} +/* Safari renders non-retina tile on retina better with this, but Chrome is worse */ +.leaflet-safari .leaflet-tile { + image-rendering: -webkit-optimize-contrast; + } +/* hack that prevents hw layers "stretching" when loading new tiles */ +.leaflet-safari .leaflet-tile-container { + width: 1600px; + height: 1600px; + -webkit-transform-origin: 0 0; + } +.leaflet-marker-icon, +.leaflet-marker-shadow { + display: block; + } +/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */ +/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */ +.leaflet-container .leaflet-overlay-pane svg { + max-width: none !important; + max-height: none !important; + } +.leaflet-container .leaflet-marker-pane img, +.leaflet-container .leaflet-shadow-pane img, +.leaflet-container .leaflet-tile-pane img, +.leaflet-container img.leaflet-image-layer, +.leaflet-container .leaflet-tile { + max-width: none !important; + max-height: none !important; + width: auto; + padding: 0; + } + +.leaflet-container img.leaflet-tile { + /* See: https://bugs.chromium.org/p/chromium/issues/detail?id=600120 */ + mix-blend-mode: plus-lighter; +} + +.leaflet-container.leaflet-touch-zoom { + -ms-touch-action: pan-x pan-y; + touch-action: pan-x pan-y; + } +.leaflet-container.leaflet-touch-drag { + -ms-touch-action: pinch-zoom; + /* Fallback for FF which doesn't support pinch-zoom */ + touch-action: none; + touch-action: pinch-zoom; +} +.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom { + -ms-touch-action: none; + touch-action: none; +} +.leaflet-container { + -webkit-tap-highlight-color: transparent; +} +.leaflet-container a { + -webkit-tap-highlight-color: rgba(51, 181, 229, 0.4); +} +.leaflet-tile { + filter: inherit; + visibility: hidden; + } +.leaflet-tile-loaded { + visibility: inherit; + } +.leaflet-zoom-box { + width: 0; + height: 0; + -moz-box-sizing: border-box; + box-sizing: border-box; + z-index: 800; + } +/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */ +.leaflet-overlay-pane svg { + -moz-user-select: none; + } + +.leaflet-pane { z-index: 400; } + +.leaflet-tile-pane { z-index: 200; } +.leaflet-overlay-pane { z-index: 400; } +.leaflet-shadow-pane { z-index: 500; } +.leaflet-marker-pane { z-index: 600; } +.leaflet-tooltip-pane { z-index: 650; } +.leaflet-popup-pane { z-index: 700; } + +.leaflet-map-pane canvas { z-index: 100; } +.leaflet-map-pane svg { z-index: 200; } + +.leaflet-vml-shape { + width: 1px; + height: 1px; + } +.lvml { + behavior: url(#default#VML); + display: inline-block; + position: absolute; + } + + +/* control positioning */ + +.leaflet-control { + position: relative; + z-index: 800; + pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ + pointer-events: auto; + } +.leaflet-top, +.leaflet-bottom { + position: absolute; + z-index: 1000; + pointer-events: none; + } +.leaflet-top { + top: 0; + } +.leaflet-right { + right: 0; + } +.leaflet-bottom { + bottom: 0; + } +.leaflet-left { + left: 0; + } +.leaflet-control { + float: left; + clear: both; + } +.leaflet-right .leaflet-control { + float: right; + } +.leaflet-top .leaflet-control { + margin-top: 10px; + } +.leaflet-bottom .leaflet-control { + margin-bottom: 10px; + } +.leaflet-left .leaflet-control { + margin-left: 10px; + } +.leaflet-right .leaflet-control { + margin-right: 10px; + } + + +/* zoom and fade animations */ + +.leaflet-fade-anim .leaflet-popup { + opacity: 0; + -webkit-transition: opacity 0.2s linear; + -moz-transition: opacity 0.2s linear; + transition: opacity 0.2s linear; + } +.leaflet-fade-anim .leaflet-map-pane .leaflet-popup { + opacity: 1; + } +.leaflet-zoom-animated { + -webkit-transform-origin: 0 0; + -ms-transform-origin: 0 0; + transform-origin: 0 0; + } +svg.leaflet-zoom-animated { + will-change: transform; +} + +.leaflet-zoom-anim .leaflet-zoom-animated { + -webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1); + -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1); + transition: transform 0.25s cubic-bezier(0,0,0.25,1); + } +.leaflet-zoom-anim .leaflet-tile, +.leaflet-pan-anim .leaflet-tile { + -webkit-transition: none; + -moz-transition: none; + transition: none; + } + +.leaflet-zoom-anim .leaflet-zoom-hide { + visibility: hidden; + } + + +/* cursors */ + +.leaflet-interactive { + cursor: pointer; + } +.leaflet-grab { + cursor: -webkit-grab; + cursor: -moz-grab; + cursor: grab; + } +.leaflet-crosshair, +.leaflet-crosshair .leaflet-interactive { + cursor: crosshair; + } +.leaflet-popup-pane, +.leaflet-control { + cursor: auto; + } +.leaflet-dragging .leaflet-grab, +.leaflet-dragging .leaflet-grab .leaflet-interactive, +.leaflet-dragging .leaflet-marker-draggable { + cursor: move; + cursor: -webkit-grabbing; + cursor: -moz-grabbing; + cursor: grabbing; + } + +/* marker & overlays interactivity */ +.leaflet-marker-icon, +.leaflet-marker-shadow, +.leaflet-image-layer, +.leaflet-pane > svg path, +.leaflet-tile-container { + pointer-events: none; + } + +.leaflet-marker-icon.leaflet-interactive, +.leaflet-image-layer.leaflet-interactive, +.leaflet-pane > svg path.leaflet-interactive, +svg.leaflet-image-layer.leaflet-interactive path { + pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ + pointer-events: auto; + } + +/* visual tweaks */ + +.leaflet-container { + background: #ddd; + outline-offset: 1px; + } +.leaflet-container a { + color: #0078A8; + } +.leaflet-zoom-box { + border: 2px dotted #38f; + background: rgba(255,255,255,0.5); + } + + +/* general typography */ +.leaflet-container { + font-family: "Helvetica Neue", Arial, Helvetica, sans-serif; + font-size: 12px; + font-size: 0.75rem; + line-height: 1.5; + } + + +/* general toolbar styles */ + +.leaflet-bar { + box-shadow: 0 1px 5px rgba(0,0,0,0.65); + border-radius: 4px; + } +.leaflet-bar a { + background-color: #fff; + border-bottom: 1px solid #ccc; + width: 26px; + height: 26px; + line-height: 26px; + display: block; + text-align: center; + text-decoration: none; + color: black; + } +.leaflet-bar a, +.leaflet-control-layers-toggle { + background-position: 50% 50%; + background-repeat: no-repeat; + display: block; + } +.leaflet-bar a:hover, +.leaflet-bar a:focus { + background-color: #f4f4f4; + } +.leaflet-bar a:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + } +.leaflet-bar a:last-child { + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + border-bottom: none; + } +.leaflet-bar a.leaflet-disabled { + cursor: default; + background-color: #f4f4f4; + color: #bbb; + } + +.leaflet-touch .leaflet-bar a { + width: 30px; + height: 30px; + line-height: 30px; + } +.leaflet-touch .leaflet-bar a:first-child { + border-top-left-radius: 2px; + border-top-right-radius: 2px; + } +.leaflet-touch .leaflet-bar a:last-child { + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; + } + +/* zoom control */ + +.leaflet-control-zoom-in, +.leaflet-control-zoom-out { + font: bold 18px 'Lucida Console', Monaco, monospace; + text-indent: 1px; + } + +.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out { + font-size: 22px; + } + + +/* layers control */ + +.leaflet-control-layers { + box-shadow: 0 1px 5px rgba(0,0,0,0.4); + background: #fff; + border-radius: 5px; + } +.leaflet-control-layers-toggle { + background-image: url(images/layers.png); + width: 36px; + height: 36px; + } +.leaflet-retina .leaflet-control-layers-toggle { + background-image: url(images/layers-2x.png); + background-size: 26px 26px; + } +.leaflet-touch .leaflet-control-layers-toggle { + width: 44px; + height: 44px; + } +.leaflet-control-layers .leaflet-control-layers-list, +.leaflet-control-layers-expanded .leaflet-control-layers-toggle { + display: none; + } +.leaflet-control-layers-expanded .leaflet-control-layers-list { + display: block; + position: relative; + } +.leaflet-control-layers-expanded { + padding: 6px 10px 6px 6px; + color: #333; + background: #fff; + } +.leaflet-control-layers-scrollbar { + overflow-y: scroll; + overflow-x: hidden; + padding-right: 5px; + } +.leaflet-control-layers-selector { + margin-top: 2px; + position: relative; + top: 1px; + } +.leaflet-control-layers label { + display: block; + font-size: 13px; + font-size: 1.08333em; + } +.leaflet-control-layers-separator { + height: 0; + border-top: 1px solid #ddd; + margin: 5px -10px 5px -6px; + } + +/* Default icon URLs */ +.leaflet-default-icon-path { /* used only in path-guessing heuristic, see L.Icon.Default */ + background-image: url(images/marker-icon.png); + } + + +/* attribution and scale controls */ + +.leaflet-container .leaflet-control-attribution { + background: #fff; + background: rgba(255, 255, 255, 0.8); + margin: 0; + } +.leaflet-control-attribution, +.leaflet-control-scale-line { + padding: 0 5px; + color: #333; + line-height: 1.4; + } +.leaflet-control-attribution a { + text-decoration: none; + } +.leaflet-control-attribution a:hover, +.leaflet-control-attribution a:focus { + text-decoration: underline; + } +.leaflet-attribution-flag { + display: inline !important; + vertical-align: baseline !important; + width: 1em; + height: 0.6669em; + } +.leaflet-left .leaflet-control-scale { + margin-left: 5px; + } +.leaflet-bottom .leaflet-control-scale { + margin-bottom: 5px; + } +.leaflet-control-scale-line { + border: 2px solid #777; + border-top: none; + line-height: 1.1; + padding: 2px 5px 1px; + white-space: nowrap; + -moz-box-sizing: border-box; + box-sizing: border-box; + background: rgba(255, 255, 255, 0.8); + text-shadow: 1px 1px #fff; + } +.leaflet-control-scale-line:not(:first-child) { + border-top: 2px solid #777; + border-bottom: none; + margin-top: -2px; + } +.leaflet-control-scale-line:not(:first-child):not(:last-child) { + border-bottom: 2px solid #777; + } + +.leaflet-touch .leaflet-control-attribution, +.leaflet-touch .leaflet-control-layers, +.leaflet-touch .leaflet-bar { + box-shadow: none; + } +.leaflet-touch .leaflet-control-layers, +.leaflet-touch .leaflet-bar { + border: 2px solid rgba(0,0,0,0.2); + background-clip: padding-box; + } + + +/* popup */ + +.leaflet-popup { + position: absolute; + text-align: center; + margin-bottom: 20px; + } +.leaflet-popup-content-wrapper { + padding: 1px; + text-align: left; + border-radius: 12px; + } +.leaflet-popup-content { + margin: 13px 24px 13px 20px; + line-height: 1.3; + font-size: 13px; + font-size: 1.08333em; + min-height: 1px; + } +.leaflet-popup-content p { + margin: 17px 0; + margin: 1.3em 0; + } +.leaflet-popup-tip-container { + width: 40px; + height: 20px; + position: absolute; + left: 50%; + margin-top: -1px; + margin-left: -20px; + overflow: hidden; + pointer-events: none; + } +.leaflet-popup-tip { + width: 17px; + height: 17px; + padding: 1px; + + margin: -10px auto 0; + pointer-events: auto; + + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + } +.leaflet-popup-content-wrapper, +.leaflet-popup-tip { + background: white; + color: #333; + box-shadow: 0 3px 14px rgba(0,0,0,0.4); + } +.leaflet-container a.leaflet-popup-close-button { + position: absolute; + top: 0; + right: 0; + border: none; + text-align: center; + width: 24px; + height: 24px; + font: 16px/24px Tahoma, Verdana, sans-serif; + color: #757575; + text-decoration: none; + background: transparent; + } +.leaflet-container a.leaflet-popup-close-button:hover, +.leaflet-container a.leaflet-popup-close-button:focus { + color: #585858; + } +.leaflet-popup-scrolled { + overflow: auto; + } + +.leaflet-oldie .leaflet-popup-content-wrapper { + -ms-zoom: 1; + } +.leaflet-oldie .leaflet-popup-tip { + width: 24px; + margin: 0 auto; + + -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)"; + filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678); + } + +.leaflet-oldie .leaflet-control-zoom, +.leaflet-oldie .leaflet-control-layers, +.leaflet-oldie .leaflet-popup-content-wrapper, +.leaflet-oldie .leaflet-popup-tip { + border: 1px solid #999; + } + + +/* div icon */ + +.leaflet-div-icon { + background: #fff; + border: 1px solid #666; + } + + +/* Tooltip */ +/* Base styles for the element that has a tooltip */ +.leaflet-tooltip { + position: absolute; + padding: 6px; + background-color: #fff; + border: 1px solid #fff; + border-radius: 3px; + color: #222; + white-space: nowrap; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + pointer-events: none; + box-shadow: 0 1px 3px rgba(0,0,0,0.4); + } +.leaflet-tooltip.leaflet-interactive { + cursor: pointer; + pointer-events: auto; + } +.leaflet-tooltip-top:before, +.leaflet-tooltip-bottom:before, +.leaflet-tooltip-left:before, +.leaflet-tooltip-right:before { + position: absolute; + pointer-events: none; + border: 6px solid transparent; + background: transparent; + content: ""; + } + +/* Directions */ + +.leaflet-tooltip-bottom { + margin-top: 6px; +} +.leaflet-tooltip-top { + margin-top: -6px; +} +.leaflet-tooltip-bottom:before, +.leaflet-tooltip-top:before { + left: 50%; + margin-left: -6px; + } +.leaflet-tooltip-top:before { + bottom: 0; + margin-bottom: -12px; + border-top-color: #fff; + } +.leaflet-tooltip-bottom:before { + top: 0; + margin-top: -12px; + margin-left: -6px; + border-bottom-color: #fff; + } +.leaflet-tooltip-left { + margin-left: -6px; +} +.leaflet-tooltip-right { + margin-left: 6px; +} +.leaflet-tooltip-left:before, +.leaflet-tooltip-right:before { + top: 50%; + margin-top: -6px; + } +.leaflet-tooltip-left:before { + right: 0; + margin-right: -12px; + border-left-color: #fff; + } +.leaflet-tooltip-right:before { + left: 0; + margin-left: -12px; + border-right-color: #fff; + } + +/* Printing */ + +@media print { + /* Prevent printers from removing background-images of controls. */ + .leaflet-control { + -webkit-print-color-adjust: exact; + print-color-adjust: exact; + } + } diff --git a/themes/capro-tw/assets/css/vendor/tailwind.css b/themes/capro-tw/assets/css/vendor/tailwind.css new file mode 100644 index 00000000..a6f2f9fc --- /dev/null +++ b/themes/capro-tw/assets/css/vendor/tailwind.css @@ -0,0 +1,2 @@ +/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */ +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-tracking:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}@layer theme{:root,:host{--font-sans:"Space Grotesk", sans-serif;--font-serif:"Spectral", serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--text-8xl:6rem;--text-8xl--line-height:1;--font-weight-light:300;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wider:.05em;--tracking-widest:.1em;--leading-relaxed:1.625;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary:#c04545;--color-primary-text:#e57575;--color-primary-dark:#b84444;--color-secondary:#85bfbf;--color-dark:#20242b;--color-grey:#2a2f36;--color-light:#8a8e93;--color-body:#d0d2d4;--color-muted:#9a9da0;--color-border:#eceff11f;--transition-fast:.2s ease;--transition-base:.3s ease;--transition-slow:.6s ease}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}@font-face{font-family:Space Grotesk;src:url(/webfonts/google-fonts/space-grotesk/space-grotesk-latin-300-normal.woff2)format("woff2");font-weight:300;font-display:swap}@font-face{font-family:Space Grotesk;src:url(/webfonts/google-fonts/space-grotesk/space-grotesk-latin-400-normal.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Space Grotesk;src:url(/webfonts/google-fonts/space-grotesk/space-grotesk-latin-500-normal.woff2)format("woff2");font-weight:500;font-display:swap}@font-face{font-family:Spectral;src:url(/webfonts/google-fonts/spectral/spectral-latin-300-normal.woff2)format("woff2");font-weight:300;font-display:swap}html{scroll-behavior:smooth;background-color:var(--color-grey);color:var(--color-body)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}body{font-family:var(--font-sans);-webkit-font-smoothing:antialiased;font-size:18px;line-height:1.6}@media (min-width:768px){body{font-size:20px}}h1,h2,h3,h4,h5,h6{font-family:var(--font-sans);color:var(--color-secondary);line-height:1.2}h1{font-weight:300}h2{font-weight:500}h3,h4,h5,h6{font-weight:400}p{font-family:var(--font-serif);color:var(--color-body);line-height:1.7}a{color:var(--color-secondary);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--color-body)}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}::selection{background:var(--color-primary);color:var(--color-body)}}@layer components{.section{padding-top:6rem;padding-bottom:6rem}@media (max-width:768px){.section{padding-top:3rem;padding-bottom:3rem}}.section-title{margin-bottom:calc(var(--spacing) * 12);text-align:center}.section-title h2{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height));--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);text-transform:capitalize;color:var(--color-body)}.section-title .accent{color:var(--color-primary-text)}.border-accent{border-top:2px solid var(--color-border);width:30%;height:1px;margin:15px auto 0;position:relative}.border-accent:before{content:"";background-color:var(--color-primary);width:50px;height:6px;margin-left:-25px;position:absolute;top:-4px;left:50%}.bg-dark{background-color:var(--color-dark)}.bg-grey{background-color:var(--color-grey)}.reveal{opacity:0;transition:opacity var(--transition-slow), transform var(--transition-slow);transform:translateY(24px)}.reveal.visible{opacity:1;transform:translateY(0)}.site-nav{top:calc(var(--spacing) * 0);z-index:50;background-color:var(--color-dark);transition:border-color var(--transition-base), box-shadow var(--transition-base);border-bottom:1px solid #0000;position:sticky}.site-nav.nav-scrolled{border-bottom-color:var(--color-border);box-shadow:0 2px 12px #0000004d}.site-nav a{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--color-body);transition:color var(--transition-fast)}.site-nav a:hover,.site-nav a.active{color:var(--color-primary)}.lang-select{cursor:pointer;border-style:var(--tw-border-style);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));appearance:none;background:var(--color-dark);color:var(--color-body);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23d0d2d4' stroke-width='2' fill='none'/%3E%3C/svg%3E");background-position:right 6px center;background-repeat:no-repeat;border-width:0;padding:4px 24px 4px 8px}.footer-social-icon{height:calc(var(--spacing) * 12);width:calc(var(--spacing) * 12);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));color:var(--color-light);border:1px solid var(--color-border);transition:all var(--transition-base);border-radius:3.40282e38px;justify-content:center;align-items:center;display:flex}.footer-social-icon:hover{background-color:var(--color-primary);border-color:var(--color-primary);color:#fff}.btn{padding-inline:calc(var(--spacing) * 8);padding-block:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider);text-transform:uppercase;transition:all var(--transition-fast);display:inline-block}.btn-primary{background-color:var(--color-primary-dark);color:#fff}.btn-primary:hover{background-color:var(--color-primary);color:#fff}.btn-outline{border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-border);color:var(--color-body)}.btn-outline:hover{border-color:var(--color-primary);color:var(--color-primary)}.btn-hero{padding-inline:calc(var(--spacing) * 14);padding-block:calc(var(--spacing) * 5);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest);text-transform:uppercase;background-color:var(--color-primary);border:2px solid var(--color-primary);color:#fff}.btn-hero:hover{color:#fff;background-color:#0000;border-color:#fff}.about-block{background:var(--color-dark);height:100%;transition:border-color var(--transition-base);border-bottom:2px solid #0000;padding:40px 32px}.about-block:hover{border-bottom-color:var(--color-primary)}.about-block:hover .icon-box{transform:translateY(-10px)}.about-block h3{color:var(--color-secondary)}.icon-box{border-left:2px solid var(--color-secondary);border-right:2px solid var(--color-secondary);width:160px;height:92px;color:var(--color-light);transition:transform var(--transition-base);z-index:1;background-color:#0000;justify-content:center;align-items:center;margin:46px auto 60px;padding:20px 0;font-size:36px;display:flex;position:relative}.icon-box:before,.icon-box:after{content:"";z-index:-1;background-color:var(--color-dark);width:113.14px;height:113.14px;position:absolute;left:20.43px;transform:scaleY(.5774)rotate(-45deg)}.icon-box:before{border-top:2px solid var(--color-secondary);border-right:2px solid var(--color-secondary);top:-56.57px}.icon-box:after{border-bottom:2px solid var(--color-secondary);border-left:2px solid var(--color-secondary);bottom:-56.57px}.service-block{text-align:center;background-color:var(--color-dark);border-left:1px solid var(--color-border);border-top:1px solid var(--color-border);height:100%;padding:60px 32px;box-shadow:2px 2px 5px #2c2c2c4d,13px 13px #ffffff1f}.service-block i{margin-bottom:calc(var(--spacing) * 6);color:var(--color-light);font-size:50px;display:block}.service-block h3{margin-bottom:calc(var(--spacing) * 3);font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-secondary)}.progress-bar-track{background-color:var(--color-border);border-radius:3.40282e38px;width:100%;height:6px}.progress-bar-fill{background-color:var(--color-primary);border-radius:3.40282e38px;height:100%;transition:width .8s}.counter-card{background-color:var(--color-dark);flex-direction:column;justify-content:center;align-items:center;width:200px;height:200px;padding:32px 24px;display:flex}.counter-card i{margin-bottom:calc(var(--spacing) * 3);color:var(--color-light);font-size:40px;display:block}.counter-card .counter-value{color:var(--color-secondary);font-size:48px;font-weight:700}.counter-card h3{margin-top:calc(var(--spacing) * 2);color:var(--color-body);font-size:.9rem}.price-card{background-color:var(--color-dark);border:1px solid var(--color-border);height:100%;transition:border-color var(--transition-base);padding:40px 32px}.price-card h3{color:var(--color-secondary);margin-bottom:24px}.price-card table td{padding:6px 8px}.price-card:hover{border-color:var(--color-primary)}.testimonial-scroll{align-items:stretch;gap:calc(var(--spacing) * 6);scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--color-light) transparent;padding-bottom:16px;display:flex;overflow-x:auto}.testimonial-scroll::-webkit-scrollbar{height:6px}.testimonial-scroll::-webkit-scrollbar-track{background:0 0}.testimonial-scroll::-webkit-scrollbar-thumb{background:var(--color-light);border-radius:3px}.testimonial-nav{z-index:10;height:calc(var(--spacing) * 10);width:calc(var(--spacing) * 10);--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y);background:var(--color-dark);border:1px solid var(--color-border);color:var(--color-body);transition:all var(--transition-fast);cursor:pointer;justify-content:center;align-items:center;display:flex;position:absolute;top:50%}.testimonial-nav:hover{border-color:var(--color-primary);color:var(--color-primary)}.testimonial-nav-left{left:-20px}.testimonial-nav-right{right:-20px}@media (max-width:768px){.testimonial-nav{display:none}}.testimonial-modern{background-color:var(--color-grey);border:1px solid var(--color-border);scroll-snap-align:start;width:360px;transition:border-color var(--transition-base);flex-direction:column;flex-shrink:0;padding:32px;display:flex}.testimonial-modern:hover{border-color:var(--color-primary)}.testimonial-modern blockquote{font-size:1rem;line-height:1.7}.testimonial-modern blockquote p{margin:0}.contact-icon{margin-top:calc(var(--spacing) * 1);margin-right:calc(var(--spacing) * 4);color:var(--color-primary);font-size:20px}.portfolio-card{border:1px solid var(--color-border);background-color:var(--color-dark);transition:border-color var(--transition-base)}.portfolio-card:hover{border-color:var(--color-primary)}.portfolio-card .portfolio-img{background:#fff;justify-content:center;align-items:center;height:16rem;padding:40px;display:flex;position:relative;overflow:hidden}.portfolio-card .portfolio-img img{object-fit:contain;width:auto;max-height:100%}.portfolio-card .portfolio-overlay{inset:calc(var(--spacing) * 0);opacity:0;transition:opacity var(--transition-base);background:#ffffffeb;justify-content:center;align-items:center;display:flex;position:absolute}.portfolio-card:hover .portfolio-overlay{opacity:1}.portfolio-card .portfolio-overlay .search-circle{background-color:var(--color-primary);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:50px;height:50px;font-size:20px;display:flex}.portfolio-card .portfolio-meta{padding:20px}.portfolio-card .portfolio-meta h3{color:var(--color-secondary);font-size:1rem}.portfolio-card .portfolio-meta p{color:var(--color-light);margin-top:8px;font-size:.85rem}.team-card{border:1px solid var(--color-border);height:100%;transition:border-color var(--transition-base);background-color:#0000;flex-direction:column;display:flex;overflow:hidden}.team-card:hover{border-color:var(--color-primary)}.team-photo{position:relative;overflow:hidden}.team-photo img{width:100%;transition:transform var(--transition-base), filter var(--transition-base)}.team-photo:hover img{filter:brightness(1.15);transform:scale(1.05)}@media (prefers-contrast:more){.team-photo:hover img{filter:none}}.team-photo .social-overlay{inset:calc(var(--spacing) * 0);padding-bottom:calc(var(--spacing) * 5);opacity:0;background:linear-gradient(to top, var(--color-dark) 0%, transparent 60%);transition:opacity var(--transition-base);justify-content:center;align-items:flex-end;display:flex;position:absolute}.team-card:hover .social-overlay{opacity:1}.social-overlay a{margin-inline:calc(var(--spacing) * 1);height:calc(var(--spacing) * 9);width:calc(var(--spacing) * 9);text-align:center;font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));--tw-leading:calc(var(--spacing) * 9);line-height:calc(var(--spacing) * 9);color:var(--color-body);transition:color var(--transition-fast);display:inline-block}.social-overlay a:hover{color:var(--color-primary)}.team-meta{background-color:var(--color-dark);flex:1;padding:16px}.team-meta h3{margin-bottom:calc(var(--spacing) * 1);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.team-meta span{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-light)}.pubs-table{width:100%;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-body)}.pubs-table th{padding-bottom:calc(var(--spacing) * 3);text-align:left;font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--color-body);border-bottom:1px solid var(--color-border)}.pubs-table td{padding-block:calc(var(--spacing) * 3);vertical-align:top;border-bottom:1px solid var(--color-border)}.pubs-table .pub-year{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);font-family:var(--font-sans);color:var(--color-secondary)}.pubs-table .pub-authors{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed);color:var(--color-muted)}.pubs-table .pub-title a{color:var(--color-secondary);transition:color var(--transition-fast)}.pubs-table .pub-title a:hover{color:var(--color-primary)}.pubs-table .pub-journal{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));color:var(--color-muted);font-style:italic}.pubs-table tbody tr:hover td{color:var(--color-body)}.year-select{cursor:pointer;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);appearance:none;background:var(--color-dark);color:var(--color-body);border:1px solid var(--color-border);transition:border-color var(--transition-fast);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23d0d2d4' stroke-width='2' fill='none'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;border-radius:4px;padding:8px 36px 8px 14px}.year-select:hover,.year-select:focus{border-color:var(--color-primary)}.year-select option{background:var(--color-dark);color:var(--color-body)}.footer-waves{background-color:var(--color-dark);height:60px;position:relative;overflow:hidden}.footer-waves svg{width:100%;height:100%;position:absolute;bottom:0;left:0}}@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.top-16{top:calc(var(--spacing) * 16)}.right-0{right:calc(var(--spacing) * 0)}.right-5{right:calc(var(--spacing) * 5)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-5{bottom:calc(var(--spacing) * 5)}.left-0{left:calc(var(--spacing) * 0)}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.my-6{margin-block:calc(var(--spacing) * 6)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-auto{margin-top:auto}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.mb-12{margin-bottom:calc(var(--spacing) * 12)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-48{height:calc(var(--spacing) * 48)}.h-full{height:100%}.min-h-\[400px\]{min-height:400px}.min-h-screen{min-height:100vh}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-48{width:calc(var(--spacing) * 48)}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-none{max-width:none}.flex-shrink-0{flex-shrink:0}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-12{gap:calc(var(--spacing) * 12)}.gap-16{gap:calc(var(--spacing) * 16)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-border{border-color:var(--color-border)}.border-primary{border-color:var(--color-primary)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab, red, red)){.bg-black\/50{background-color:color-mix(in oklab, var(--color-black) 50%, transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab, red, red)){.bg-black\/60{background-color:color-mix(in oklab, var(--color-black) 60%, transparent)}}.bg-dark{background-color:var(--color-dark)}.bg-grey{background-color:var(--color-grey)}.bg-primary{background-color:var(--color-primary)}.bg-cover{background-size:cover}.bg-center{background-position:50%}.bg-top{background-position:top}.object-cover{object-fit:cover}.p-2{padding:calc(var(--spacing) * 2)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-8{padding:calc(var(--spacing) * 8)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-24{padding-block:calc(var(--spacing) * 24)}.py-28{padding-block:calc(var(--spacing) * 28)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pb-12{padding-bottom:calc(var(--spacing) * 12)}.pl-2{padding-left:calc(var(--spacing) * 2)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-serif{font-family:var(--font-serif)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-8xl{font-size:var(--text-8xl);line-height:var(--tw-leading,var(--text-8xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.text-body{color:var(--color-body)}.text-light{color:var(--color-light)}.text-muted{color:var(--color-muted)}.text-primary{color:var(--color-primary)}.text-secondary{color:var(--color-secondary)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.opacity-40{opacity:.4}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.hover\:border-primary:hover{border-color:var(--color-primary)}.hover\:bg-primary:hover{background-color:var(--color-primary)}.hover\:text-primary:hover{color:var(--color-primary)}.hover\:underline:hover{text-decoration-line:underline}}@media (min-width:40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:48rem){.md\:flex{display:flex}.md\:hidden{display:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--line-height))}.md\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}}@media (min-width:64rem){.lg\:w-1\/2{width:50%}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:p-16{padding:calc(var(--spacing) * 16)}.lg\:text-8xl{font-size:var(--text-8xl);line-height:var(--tw-leading,var(--text-8xl--line-height))}}}[x-cloak]{display:none!important}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0} \ No newline at end of file diff --git a/themes/capro-tw/assets/js/counter.js b/themes/capro-tw/assets/js/counter.js new file mode 100644 index 00000000..e1a75609 --- /dev/null +++ b/themes/capro-tw/assets/js/counter.js @@ -0,0 +1,26 @@ +document.addEventListener('DOMContentLoaded', function () { + var counters = document.querySelectorAll('[data-count]'); + if (!counters.length) return; + + var observer = new IntersectionObserver(function (entries) { + entries.forEach(function (entry) { + if (!entry.isIntersecting) return; + var el = entry.target; + var target = parseInt(el.dataset.count, 10); + var duration = 1200; + var start = performance.now(); + + function step(now) { + var progress = Math.min((now - start) / duration, 1); + el.textContent = Math.floor(progress * target); + if (progress < 1) requestAnimationFrame(step); + else el.textContent = target; + } + + requestAnimationFrame(step); + observer.unobserve(el); + }); + }, { threshold: 0.5 }); + + counters.forEach(function (el) { observer.observe(el); }); +}); diff --git a/themes/capro-tw/assets/js/map.js b/themes/capro-tw/assets/js/map.js new file mode 100644 index 00000000..f9393d38 --- /dev/null +++ b/themes/capro-tw/assets/js/map.js @@ -0,0 +1,26 @@ +(function () { + var el = document.getElementById('contact-map'); + if (!el) return; + + var lat = parseFloat(el.dataset.lat); + var lng = parseFloat(el.dataset.lng); + var title = el.dataset.title; + + var map = L.map(el, { + zoomControl: true, + scrollWheelZoom: false + }).setView([lat, lng], 15); + + L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { + attribution: '© OpenStreetMap' + }).addTo(map); + + var markerIcon = L.divIcon({ + className: '', + html: '', + iconSize: [28, 42], + iconAnchor: [14, 42] + }); + + L.marker([lat, lng], { icon: markerIcon, title: title }).addTo(map); +})(); diff --git a/themes/capro-tw/assets/js/orcid-pubs.js b/themes/capro-tw/assets/js/orcid-pubs.js new file mode 100644 index 00000000..581bf7c1 --- /dev/null +++ b/themes/capro-tw/assets/js/orcid-pubs.js @@ -0,0 +1,151 @@ +(function () { + var container = document.getElementById("orcid-pubs"); + if (!container) return; + + var orcidId = container.dataset.orcid; + if (!orcidId) return; + + var loading = document.getElementById("orcid-pubs-loading"); + var error = document.getElementById("orcid-pubs-error"); + var content = document.getElementById("orcid-pubs-content"); + var yearSelect = document.getElementById("orcid-pubs-year-select"); + var tbody = document.getElementById("orcid-pubs-tbody"); + + var apiBase = + "https://api.openalex.org/works?filter=author.orcid:" + + orcidId + + "&select=title,publication_year,primary_location,doi,authorships" + + "&sort=publication_year:desc&per_page=200" + + "&mailto=a.m.mowinckel@psykologi.uio.no"; + + function formatAuthors(authorships) { + var names = authorships.map(function (a) { + return a.author.display_name; + }); + if (names.length > 6) { + return names.slice(0, 3).join(", ") + " et al."; + } + if (names.length > 1) { + return names.slice(0, -1).join(", ") + " & " + names[names.length - 1]; + } + return names[0] || ""; + } + + function stripHtml(str) { + var tmp = document.createElement("span"); + tmp.innerHTML = str; + return tmp.textContent || tmp.innerText || ""; + } + + function fetchAll(url, collected) { + return fetch(url) + .then(function (res) { + if (!res.ok) throw new Error("OpenAlex API error: " + res.status); + return res.json(); + }) + .then(function (data) { + collected = collected.concat(data.results); + if (data.meta.next_cursor) { + return fetchAll( + apiBase + "&cursor=" + data.meta.next_cursor, + collected + ); + } + return collected; + }); + } + + fetchAll(apiBase + "&cursor=*", []) + .then(function (results) { + var pubs = []; + + results.forEach(function (w) { + var title = w.title ? stripHtml(w.title) : ""; + var year = w.publication_year; + var loc = w.primary_location || {}; + var src = loc.source || {}; + var journal = src.display_name || ""; + var doi = w.doi || null; + var authors = formatAuthors(w.authorships || []); + + if (title && year) { + pubs.push({ + title: title, + journal: journal, + year: year, + doi: doi, + author: authors, + }); + } + }); + + pubs.sort(function (a, b) { + return b.year - a.year; + }); + + var years = []; + pubs.forEach(function (p) { + if (years.indexOf(p.year) === -1) years.push(p.year); + }); + + years.forEach(function (y) { + var option = document.createElement("option"); + option.value = y; + option.textContent = y; + yearSelect.appendChild(option); + }); + + var rows = []; + + pubs.forEach(function (p) { + var tr = document.createElement("tr"); + tr.dataset.year = p.year; + + var tdYear = document.createElement("td"); + tdYear.className = "pub-year"; + tdYear.textContent = p.year; + + var tdAuthor = document.createElement("td"); + tdAuthor.className = "pub-authors"; + tdAuthor.textContent = p.author; + + var tdTitle = document.createElement("td"); + tdTitle.className = "pub-title"; + if (p.doi) { + var a = document.createElement("a"); + a.href = p.doi; + a.textContent = p.title; + a.target = "_blank"; + a.rel = "noopener"; + tdTitle.appendChild(a); + } else { + tdTitle.textContent = p.title; + } + + var tdJournal = document.createElement("td"); + tdJournal.className = "pub-journal"; + tdJournal.textContent = p.journal; + + tr.appendChild(tdYear); + tr.appendChild(tdAuthor); + tr.appendChild(tdTitle); + tr.appendChild(tdJournal); + tbody.appendChild(tr); + rows.push(tr); + }); + + loading.style.display = "none"; + content.style.display = "block"; + + yearSelect.addEventListener("change", function () { + var val = yearSelect.value; + rows.forEach(function (row) { + row.style.display = (val === "all" || row.dataset.year === val) ? "" : "none"; + }); + }); + }) + .catch(function () { + loading.style.display = "none"; + error.style.display = "block"; + }); +})(); diff --git a/themes/capro-tw/assets/js/scroll-reveal.js b/themes/capro-tw/assets/js/scroll-reveal.js new file mode 100644 index 00000000..4a7b50d6 --- /dev/null +++ b/themes/capro-tw/assets/js/scroll-reveal.js @@ -0,0 +1,15 @@ +document.addEventListener('DOMContentLoaded', function () { + var els = document.querySelectorAll('.reveal'); + if (!els.length || !('IntersectionObserver' in window)) return; + + var observer = new IntersectionObserver(function (entries) { + entries.forEach(function (entry) { + if (entry.isIntersecting) { + entry.target.classList.add('visible'); + observer.unobserve(entry.target); + } + }); + }, { threshold: 0.1 }); + + els.forEach(function (el) { observer.observe(el); }); +}); diff --git a/themes/capro-tw/assets/js/vendor/alpine.min.js b/themes/capro-tw/assets/js/vendor/alpine.min.js new file mode 100644 index 00000000..8e339a2b --- /dev/null +++ b/themes/capro-tw/assets/js/vendor/alpine.min.js @@ -0,0 +1,5 @@ +(()=>{var ie=!1,oe=!1,Y=[],se=-1,ae=!1;function We(t){Bn(t)}function Ge(){ae=!0}function Je(){ae=!1,Xe()}function Bn(t){Y.includes(t)||Y.push(t),Xe()}function Ye(t){let e=Y.indexOf(t);e!==-1&&e>se&&Y.splice(e,1)}function Xe(){if(!oe&&!ie){if(ae)return;ie=!0,queueMicrotask(zn)}}function zn(){ie=!1,oe=!0;for(let t=0;tt.effect(e,{scheduler:r=>{ce?We(r):r()}}),le=t.raw}function ue(t){D=t}function tr(t){let e=()=>{};return[n=>{let i=D(n);return t._x_effects||(t._x_effects=new Set,t._x_runEffects=()=>{t._x_effects.forEach(o=>o())}),t._x_effects.add(i),e=()=>{i!==void 0&&(t._x_effects.delete(i),z(i))},i},()=>{e()}]}function Ot(t,e){let r=!0,n,i=D(()=>{let o=t();if(JSON.stringify(o),!r&&(typeof o=="object"||o!==n)){let s=n;queueMicrotask(()=>{e(o,s)})}n=o,r=!1});return()=>z(i)}async function er(t){Ge();try{await t(),await Promise.resolve()}finally{Je()}}var rr=[],nr=[],ir=[];function or(t){ir.push(t)}function it(t,e){typeof e=="function"?(t._x_cleanups||(t._x_cleanups=[]),t._x_cleanups.push(e)):(e=t,nr.push(e))}function Tt(t){rr.push(t)}function Rt(t,e,r){t._x_attributeCleanups||(t._x_attributeCleanups={}),t._x_attributeCleanups[e]||(t._x_attributeCleanups[e]=[]),t._x_attributeCleanups[e].push(r)}function fe(t,e){t._x_attributeCleanups&&Object.entries(t._x_attributeCleanups).forEach(([r,n])=>{(e===void 0||e.includes(r))&&(n.forEach(i=>i()),delete t._x_attributeCleanups[r])})}function sr(t){for(t._x_effects?.forEach(Ye);t._x_cleanups?.length;)t._x_cleanups.pop()()}var de=new MutationObserver(_e),pe=!1;function mt(){de.observe(document,{subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0}),pe=!0}function me(){Hn(),de.disconnect(),pe=!1}var pt=[];function Hn(){let t=de.takeRecords();pt.push(()=>t.length>0&&_e(t));let e=pt.length;queueMicrotask(()=>{if(pt.length===e)for(;pt.length>0;)pt.shift()()})}function h(t){if(!pe)return t();me();let e=t();return mt(),e}var he=!1,Ct=[];function ar(){he=!0}function cr(){he=!1,_e(Ct),Ct=[]}function _e(t){if(he){Ct=Ct.concat(t);return}let e=[],r=new Set,n=new Map,i=new Map;for(let o=0;o{s.nodeType===1&&s._x_marker&&r.add(s)}),t[o].addedNodes.forEach(s=>{if(s.nodeType===1){if(r.has(s)){r.delete(s);return}s._x_marker||e.push(s)}})),t[o].type==="attributes")){let s=t[o].target,a=t[o].attributeName,c=t[o].oldValue,l=()=>{n.has(s)||n.set(s,[]),n.get(s).push({name:a,value:s.getAttribute(a)})},u=()=>{i.has(s)||i.set(s,[]),i.get(s).push(a)};s.hasAttribute(a)&&c===null?l():s.hasAttribute(a)?(u(),l()):u()}i.forEach((o,s)=>{fe(s,o)}),n.forEach((o,s)=>{rr.forEach(a=>a(s,o))});for(let o of r)e.some(s=>s.contains(o))||nr.forEach(s=>s(o));for(let o of e)o.isConnected&&ir.forEach(s=>s(o));e=null,r=null,n=null,i=null}function Mt(t){return I(H(t))}function P(t,e,r){return t._x_dataStack=[e,...H(r||t)],()=>{t._x_dataStack=t._x_dataStack.filter(n=>n!==e)}}function H(t){return t._x_dataStack?t._x_dataStack:typeof ShadowRoot=="function"&&t instanceof ShadowRoot?H(t.host):t.parentNode?H(t.parentNode):[]}function I(t){return new Proxy({objects:t},Kn)}var Kn={ownKeys({objects:t}){return Array.from(new Set(t.flatMap(e=>Object.keys(e))))},has({objects:t},e){return e==Symbol.unscopables?!1:t.some(r=>Object.prototype.hasOwnProperty.call(r,e)||Reflect.has(r,e))},get({objects:t},e,r){return e=="toJSON"?Vn:Reflect.get(t.find(n=>Reflect.has(n,e))||{},e,r)},set({objects:t},e,r,n){let i=t.find(s=>Object.prototype.hasOwnProperty.call(s,e))||t[t.length-1],o=Object.getOwnPropertyDescriptor(i,e);return o?.set&&o?.get?o.set.call(n,r)||!0:Reflect.set(i,e,r)}};function Vn(){return Reflect.ownKeys(this).reduce((e,r)=>(e[r]=Reflect.get(this,r),e),{})}function ot(t){let e=n=>typeof n=="object"&&!Array.isArray(n)&&n!==null,r=(n,i="")=>{Object.entries(Object.getOwnPropertyDescriptors(n)).forEach(([o,{value:s,enumerable:a}])=>{if(a===!1||s===void 0||typeof s=="object"&&s!==null&&s.__v_skip)return;let c=i===""?o:`${i}.${o}`;typeof s=="object"&&s!==null&&s._x_interceptor?n[o]=s.initialize(t,c,o):e(s)&&s!==n&&!(s instanceof Element)&&r(s,c)})};return r(t)}function Nt(t,e=()=>{}){let r={initialValue:void 0,_x_interceptor:!0,initialize(n,i,o){return t(this.initialValue,()=>Un(n,i),s=>ge(n,i,s),i,o)}};return e(r),n=>{if(typeof n=="object"&&n!==null&&n._x_interceptor){let i=r.initialize.bind(r);r.initialize=(o,s,a)=>{let c=n.initialize(o,s,a);return r.initialValue=c,i(o,s,a)}}else r.initialValue=n;return r}}function Un(t,e){return e.split(".").reduce((r,n)=>r[n],t)}function ge(t,e,r){if(typeof e=="string"&&(e=e.split(".")),e.length===1)t[e[0]]=r;else{if(e.length===0)throw error;return t[e[0]]||(t[e[0]]={}),ge(t[e[0]],e.slice(1),r)}}var lr={};function y(t,e){lr[t]=e}function U(t,e){let r=qn(e);return Object.entries(lr).forEach(([n,i])=>{Object.defineProperty(t,`$${n}`,{get(){return i(e,r)},enumerable:!1})}),t}function qn(t){let[e,r]=xe(t),n={interceptor:Nt,...e};return it(t,r),n}function ur(t,e,r,...n){try{return r(...n)}catch(i){st(i,t,e)}}function st(...t){return fr(...t)}var fr=Wn;function dr(t){fr=t}function Wn(t,e,r=void 0){t=Object.assign(t??{message:"No error message given."},{el:e,expression:r}),console.warn(`Alpine Expression Error: ${t.message} + +${r?'Expression: "'+r+`" + +`:""}`,e),setTimeout(()=>{throw t},0)}var at=!0;function kt(t){let e=at;at=!1;let r=t();return at=e,r}function N(t,e,r={}){let n;return x(t,e)(i=>n=i,r),n}function x(...t){return pr(...t)}var pr=be;function mr(t){pr=t}var hr;function _r(t){hr=t}function be(t,e){let r={};U(r,t);let n=[r,...H(t)],i=typeof e=="function"?Gn(n,e):Yn(n,e,t);return ur.bind(null,t,e,i)}function Gn(t,e){return(r=()=>{},{scope:n={},params:i=[],context:o}={})=>{if(!at){ht(r,e,I([n,...t]),i);return}let s=e.apply(I([n,...t]),i);ht(r,s)}}var ye={};function Jn(t,e){if(ye[t])return ye[t];let r=Object.getPrototypeOf(async function(){}).constructor,n=/^[\n\s]*if.*\(.*\)/.test(t.trim())||/^(let|const)\s/.test(t.trim())?`(async()=>{ ${t} })()`:t,o=(()=>{try{let s=new r(["__self","scope"],`with (scope) { __self.result = ${n} }; __self.finished = true; return __self.result;`);return Object.defineProperty(s,"name",{value:`[Alpine] ${t}`}),s}catch(s){return st(s,e,t),Promise.resolve()}})();return ye[t]=o,o}function Yn(t,e,r){let n=Jn(e,r);return(i=()=>{},{scope:o={},params:s=[],context:a}={})=>{n.result=void 0,n.finished=!1;let c=I([o,...t]);if(typeof n=="function"){let l=n.call(a,n,c).catch(u=>st(u,r,e));n.finished?(ht(i,n.result,c,s,r),n.result=void 0):l.then(u=>{ht(i,u,c,s,r)}).catch(u=>st(u,r,e)).finally(()=>n.result=void 0)}}}function ht(t,e,r,n,i){if(at&&typeof e=="function"){let o=e.apply(r,n);o instanceof Promise?o.then(s=>ht(t,s,r,n)).catch(s=>st(s,i,e)):t(o)}else typeof e=="object"&&e instanceof Promise?e.then(o=>t(o)):t(e)}function gr(...t){return hr(...t)}function xr(t,e,r={}){let n={};U(n,t);let i=[n,...H(t)],o=I([r.scope??{},...i]),s=r.params??[];if(e.includes("await")){let a=Object.getPrototypeOf(async function(){}).constructor,c=/^[\n\s]*if.*\(.*\)/.test(e.trim())||/^(let|const)\s/.test(e.trim())?`(async()=>{ ${e} })()`:e;return new a(["scope"],`with (scope) { let __result = ${c}; return __result }`).call(r.context,o)}else{let a=/^[\n\s]*if.*\(.*\)/.test(e.trim())||/^(let|const)\s/.test(e.trim())?`(()=>{ ${e} })()`:e,l=new Function(["scope"],`with (scope) { let __result = ${a}; return __result }`).call(r.context,o);return typeof l=="function"&&at?l.apply(o,s):l}}var ve="x-";function T(t=""){return ve+t}function yr(t){ve=t}var Dt={};function d(t,e){return Dt[t]=e,{before(r){if(!Dt[r]){console.warn(String.raw`Cannot find directive \`${r}\`. \`${t}\` will use the default order of execution`);return}let n=X.indexOf(r);X.splice(n>=0?n:X.indexOf("DEFAULT"),0,t)}}}function br(t){return Object.keys(Dt).includes(t)}function gt(t,e,r){if(e=Array.from(e),t._x_virtualDirectives){let o=Object.entries(t._x_virtualDirectives).map(([a,c])=>({name:a,value:c})),s=Se(o);o=o.map(a=>s.find(c=>c.name===a.name)?{name:`x-bind:${a.name}`,value:`"${a.value}"`}:a),e=e.concat(o)}let n={};return e.map(vr((o,s)=>n[o]=s)).filter(Ar).map(Zn(n,r)).sort(Qn).map(o=>Xn(t,o))}function Se(t){return Array.from(t).map(vr()).filter(e=>!Ar(e))}var we=!1,_t=new Map,wr=Symbol();function Er(t){we=!0;let e=Symbol();wr=e,_t.set(e,[]);let r=()=>{for(;_t.get(e).length;)_t.get(e).shift()();_t.delete(e)},n=()=>{we=!1,r()};t(r),n()}function xe(t){let e=[],r=a=>e.push(a),[n,i]=tr(t);return e.push(i),[{Alpine:K,effect:n,cleanup:r,evaluateLater:x.bind(x,t),evaluate:N.bind(N,t)},()=>e.forEach(a=>a())]}function Xn(t,e){let r=()=>{},n=Dt[e.type]||r,[i,o]=xe(t);Rt(t,e.original,o);let s=()=>{t._x_ignore||t._x_ignoreSelf||(n.inline&&n.inline(t,e,i),n=n.bind(n,t,e,i),we?_t.get(wr).push(n):n())};return s.runCleanups=o,s}var Pt=(t,e)=>({name:r,value:n})=>(r.startsWith(t)&&(r=r.replace(t,e)),{name:r,value:n}),It=t=>t;function vr(t=()=>{}){return({name:e,value:r})=>{let{name:n,value:i}=Sr.reduce((o,s)=>s(o),{name:e,value:r});return n!==e&&t(n,e),{name:n,value:i}}}var Sr=[];function ct(t){Sr.push(t)}function Ar({name:t}){return Or().test(t)}var Or=()=>new RegExp(`^${ve}([^:^.]+)\\b`);function Zn(t,e){return({name:r,value:n})=>{r===n&&(n="");let i=r.match(Or()),o=r.match(/:([a-zA-Z0-9\-_:]+)/),s=r.match(/\.[^.\]]+(?=[^\]]*$)/g)||[],a=e||t[r]||r;return{type:i?i[1]:null,value:o?o[1]:null,modifiers:s.map(c=>c.replace(".","")),expression:n,original:a}}}var Ee="DEFAULT",X=["ignore","ref","data","id","anchor","bind","init","for","model","modelable","transition","show","if",Ee,"teleport"];function Qn(t,e){let r=X.indexOf(t.type)===-1?Ee:t.type,n=X.indexOf(e.type)===-1?Ee:e.type;return X.indexOf(r)-X.indexOf(n)}function Z(t,e,r={}){t.dispatchEvent(new CustomEvent(e,{detail:r,bubbles:!0,composed:!0,cancelable:!0}))}function $(t,e){if(typeof ShadowRoot=="function"&&t instanceof ShadowRoot){Array.from(t.children).forEach(i=>$(i,e));return}let r=!1;if(e(t,()=>r=!0),r)return;let n=t.firstElementChild;for(;n;)$(n,e,!1),n=n.nextElementSibling}function w(t,...e){console.warn(`Alpine Warning: ${t}`,...e)}var Cr=!1;function Tr(){Cr&&w("Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems."),Cr=!0,document.body||w("Unable to initialize. Trying to load Alpine before `` is available. Did you forget to add `defer` in Alpine's ` + +{{/* Alpine.js */}} +{{ $alpine := resources.Get "js/vendor/alpine.min.js" | fingerprint }} + + +{{/* Map: only on pages with contact section */}} +{{ with site.Params.map }} + {{ $leafletCss := resources.Get "css/vendor/leaflet.css" | minify | fingerprint }} + + {{ $leafletJs := resources.Get "js/vendor/leaflet.js" | minify | fingerprint }} + + {{ $map := resources.Get "js/map.js" | minify | fingerprint }} + +{{ end }} diff --git a/themes/capro-tw/layouts/partials/head/css.html b/themes/capro-tw/layouts/partials/head/css.html new file mode 100644 index 00000000..4737cba8 --- /dev/null +++ b/themes/capro-tw/layouts/partials/head/css.html @@ -0,0 +1,27 @@ +{{/* Preload critical fonts */}} + + + +{{/* Preload hero image for LCP */}} +{{ with site.Params.banner }} + {{ $image := resources.GetMatch .image }} + {{ with $image }} + {{ $resized := .Resize "1600x webp" }} + + {{ end }} +{{ end }} + +{{/* Main CSS: pre-built Tailwind + Themify icons */}} +{{ $tw := resources.Get "css/vendor/tailwind.css" }} +{{ $ti := resources.Get "css/themify-icons.css" }} +{{ $css := slice $tw $ti | resources.Concat "capro.min.css" | minify | fingerprint }} + + +{{/* FontAwesome: deferred loading (self-hosted via SCSS) */}} +{{ $fa := resources.Get "scss/fontawesome.scss" | toCSS | minify | fingerprint }} + + diff --git a/themes/capro-tw/layouts/partials/head/meta.html b/themes/capro-tw/layouts/partials/head/meta.html new file mode 100644 index 00000000..1be7f723 --- /dev/null +++ b/themes/capro-tw/layouts/partials/head/meta.html @@ -0,0 +1,38 @@ + +{{ .Title }}{{ if not .IsHome }} - {{ .Site.Title }}{{ end }} + + +{{ with site.Params.author }}{{ end }} +{{ hugo.Generator }} + +{{ if hugo.IsMultilingual }} + {{ range .AllTranslations }} + + {{ end }} +{{ end }} + + +{{/* Open Graph */}} + + + + + + +{{ with resources.GetMatch site.Params.logo }} + {{ $image := .Resize "x512" }} + + +{{ end }} + +{{ with site.Params.google_analytics_id }} +{{ if ne . "" }} + + +{{ end }} +{{ end }} diff --git a/themes/capro-tw/layouts/partials/nav.html b/themes/capro-tw/layouts/partials/nav.html new file mode 100644 index 00000000..a2947fe5 --- /dev/null +++ b/themes/capro-tw/layouts/partials/nav.html @@ -0,0 +1,58 @@ + diff --git a/themes/capro-tw/layouts/partials/sections/about.html b/themes/capro-tw/layouts/partials/sections/about.html new file mode 100644 index 00000000..d50b7c83 --- /dev/null +++ b/themes/capro-tw/layouts/partials/sections/about.html @@ -0,0 +1,21 @@ +{{ with .Site.GetPage "section" "about" }} +
+
+
+

{{ with .Title }}{{ index (split . " ") 0 | safeHTML }}{{ end }} {{ with .Title }}{{ index (split . " ") 1 | safeHTML }}{{ end }}

+
+
+
+ {{ range .Params.item }} +
+
+
+

{{ .title }}

+

{{ .content | markdownify }}

+
+
+ {{ end }} +
+
+
+{{ end }} diff --git a/themes/capro-tw/layouts/partials/sections/banner.html b/themes/capro-tw/layouts/partials/sections/banner.html new file mode 100644 index 00000000..398bb00c --- /dev/null +++ b/themes/capro-tw/layouts/partials/sections/banner.html @@ -0,0 +1,23 @@ +{{ with site.Params.banner }} +{{ $image := resources.GetMatch .image }} +{{ $image = $image.Resize "1600x webp" }} +
+
+
+
+

{{ .title | markdownify }}

+

{{ .content | markdownify }}

+ {{ with .button }} + {{ .label }} + {{ end }} +
+
+ +
+{{ end }} diff --git a/themes/capro-tw/layouts/partials/sections/contact.html b/themes/capro-tw/layouts/partials/sections/contact.html new file mode 100644 index 00000000..8576ba9a --- /dev/null +++ b/themes/capro-tw/layouts/partials/sections/contact.html @@ -0,0 +1,43 @@ +{{ with site.Params.contact }} +
+
+
+

{{ with .title }}{{ index (split . " ") 0 | safeHTML }}{{ end }} {{ with .title }}{{ after (len (index (split . " ") 0)) . | safeHTML }}{{ end }}

+
+
+
+
+
+ {{ range .item }} +
+
+ +
+
{{ .info | markdownify }}
+
+ {{ end }} +
+ {{ with site.Params.map }} +
+
+
+ {{ end }} +
+
+
+

Get in touch

+

Have a project in mind? We'd love to hear about it. Reach out to us using the contact information, or book a consultation directly.

+ {{ with .content }} + {{ if findRE "reclaim\\.ai|calendly|book" . }} + {{ $link := index (findRE `https?://[^\s\)]+` .) 0 }} + {{ with $link }} + Book a consultation + {{ end }} + {{ end }} + {{ end }} +
+
+
+
+
+{{ end }} diff --git a/themes/capro-tw/layouts/partials/sections/cta.html b/themes/capro-tw/layouts/partials/sections/cta.html new file mode 100644 index 00000000..26941f0f --- /dev/null +++ b/themes/capro-tw/layouts/partials/sections/cta.html @@ -0,0 +1,27 @@ +{{ with .Site.GetPage "section" "cta" }} +{{ $cta := . }} +{{ range first 1 (.Resources.ByType "image") }} +
+
+ +
+

{{ $cta.Title }}

+
{{ $cta.Content }}
+ {{ with $cta.Params.button }} + {{ .label }} + {{ end }} +
+ +
+{{ end }} +{{ end }} diff --git a/themes/capro-tw/layouts/partials/sections/feature.html b/themes/capro-tw/layouts/partials/sections/feature.html new file mode 100644 index 00000000..2763c524 --- /dev/null +++ b/themes/capro-tw/layouts/partials/sections/feature.html @@ -0,0 +1,27 @@ +{{ with .Site.GetPage "section" "feature" }} +{{ if gt (.Params.item | len) 0 }} +
+
+
+

{{ .Title }}

+
{{ .Content }}
+
+ {{ range .Params.item }} +
+ {{ with .icon }}{{ end }} +
+

{{ .title | markdownify }}

+

{{ .content | markdownify }}

+
+
+ {{ end }} +
+
+ {{ range first 1 (.Resources.ByType "image") }} +
+
+ {{ end }} +
+
+{{ end }} +{{ end }} diff --git a/themes/capro-tw/layouts/partials/sections/funfacts.html b/themes/capro-tw/layouts/partials/sections/funfacts.html new file mode 100644 index 00000000..dd47dc47 --- /dev/null +++ b/themes/capro-tw/layouts/partials/sections/funfacts.html @@ -0,0 +1,22 @@ +{{ with .Site.GetPage "section" "funfacts" }} +{{ if gt (.Params.item | len) 0 }} +{{ range first 1 (.Resources.ByType "image") }} +
+
+{{ end }} +
+
+ {{ range .Params.item }} +
+
+ +
0
+

{{ .title | markdownify }}

+
+
+ {{ end }} +
+
+
+{{ end }} +{{ end }} diff --git a/themes/capro-tw/layouts/partials/sections/map.html b/themes/capro-tw/layouts/partials/sections/map.html new file mode 100644 index 00000000..e69de29b diff --git a/themes/capro-tw/layouts/partials/sections/news.html b/themes/capro-tw/layouts/partials/sections/news.html new file mode 100644 index 00000000..5196cfbf --- /dev/null +++ b/themes/capro-tw/layouts/partials/sections/news.html @@ -0,0 +1,45 @@ +{{ if gt (where site.RegularPages "Section" "==" "news") 0 }} +{{ if gt (.Pages | len) 0 }} +
+
+
+

+ {{ $section := .Site.GetPage "news" .Section }} + {{ with $section }} + {{ $words := split .Title " " }} + {{ if gt (len $words) 1 }} + {{ index $words 0 | safeHTML }} {{ after (len (index $words 0)) .Title | strings.TrimLeft " " | safeHTML }} + {{ else }} + {{ .Title | safeHTML }} + {{ end }} + {{ end }} +

+
+
+
+ {{ range first 3 (where site.RegularPages "Section" "==" "news") }} + {{ $sch := newScratch }} +
+
+ {{ range first 1 (.Resources.ByType "image") }} + {{ $image := (.Resize "600x webp").Fill "300x300 webp" | images.Filter (images.Grayscale) }} + {{ $sch.Set "img" $image.RelPermalink }} + {{ end }} + {{ .Title }} + +
+
+

{{ .Title }}

+ {{ delimit .Params.tags " / " | markdownify }} +
{{ .Summary }}
+
+
+ {{ end }} +
+ +
+
+{{ end }} +{{ end }} diff --git a/themes/capro-tw/layouts/partials/sections/portfolio.html b/themes/capro-tw/layouts/partials/sections/portfolio.html new file mode 100644 index 00000000..879783fb --- /dev/null +++ b/themes/capro-tw/layouts/partials/sections/portfolio.html @@ -0,0 +1,47 @@ +{{ with .Site.GetPage "section" "portfolio" }} +{{ if gt (.Pages | len) 0 }} +
+
+
+

{{ with .Title }}{{ index (split . " ") 0 | safeHTML }}{{ end }} {{ with .Title }}{{ after (len (index (split . " ") 0)) . | safeHTML }}{{ end }}

+
+
+
+ + {{ $categories := slice }} + {{ range .Pages }}{{ range .Params.categories }}{{ $categories = $categories | append . }}{{ end }}{{ end }} + {{ range ($categories | uniq) }} + + {{ end }} +
+
+ {{ range .Pages }} + {{ $sch := newScratch }} + {{ range first 1 (.Resources.ByType "image") }} + {{ $image := (.Resize "600x webp").Fit "400x400 webp" }} + {{ $sch.Set "img" $image.RelPermalink }} + {{ end }} +
+
+
+ {{ .Title }} +
+ {{ if .Params.link }} + + + + {{ end }} +
+
+
+

{{ if .Params.link }}{{ .Title }}{{ else }}{{ .Title }}{{ end }}

+

{{ .Plain | truncate 120 }}

+
+
+
+ {{ end }} +
+
+
+{{ end }} +{{ end }} diff --git a/themes/capro-tw/layouts/partials/sections/pricing.html b/themes/capro-tw/layouts/partials/sections/pricing.html new file mode 100644 index 00000000..1e21f323 --- /dev/null +++ b/themes/capro-tw/layouts/partials/sections/pricing.html @@ -0,0 +1,49 @@ +{{ with .Site.GetPage "section" "pricing" }} +{{ if and (.Params.item) (gt (.Params.item | len) 0) }} +
+
+
+

{{ with .Title }}{{ index (split . " ") 0 | safeHTML }}{{ end }} {{ with .Title }}{{ after (len (index (split . " ") 0)) . | safeHTML }}{{ end }}

+
+
+
+
{{ .Content }}
+
+ {{ $data := newScratch }} + {{ $data.Set "entities" .Params.entities }} +
+ {{ range .Params.item }} +
+

{{ .name }}

+ + {{ $unit := .unit }} + {{ range .price }} + {{ $id := .id }} + {{ $price := .price }} + {{ if eq $id "base" }} + {{ range ($data.Get "entities") }} + + + {{ end }} + {{ end }} + {{ range ($data.Get "entities") }} + {{ if eq .id $id }} + + + {{ end }} + {{ end }} + {{ end }} +
{{ .name }}{{ lang.FormatNumberCustom 0 (mul .percent $price) "-|.| " "|" }} / {{ $unit }}
{{ .name }}{{ lang.FormatNumberCustom 0 $price "-|.| " "|" }} / {{ $unit }}
+
    + {{ range .services }}
  • {{ . }}
  • {{ end }} +
+ {{ with .button }} + {{ .label }} + {{ end }} +
+ {{ end }} +
+
+
+{{ end }} +{{ end }} diff --git a/themes/capro-tw/layouts/partials/sections/service.html b/themes/capro-tw/layouts/partials/sections/service.html new file mode 100644 index 00000000..9e62b49c --- /dev/null +++ b/themes/capro-tw/layouts/partials/sections/service.html @@ -0,0 +1,21 @@ +{{ with .Site.GetPage "section" "service" }} +{{ if gt (.Params.item | len) 0 }} +
+
+
+

{{ with .Title }}{{ index (split . " ") 0 | safeHTML }}{{ end }} {{ with .Title }}{{ after (len (index (split . " ") 0)) . | safeHTML }}{{ end }}

+
+
+
+ {{ range .Params.item }} +
+ +

{{ .name | markdownify }}

+

{{ .content | markdownify }}

+
+ {{ end }} +
+
+
+{{ end }} +{{ end }} diff --git a/themes/capro-tw/layouts/partials/sections/skill.html b/themes/capro-tw/layouts/partials/sections/skill.html new file mode 100644 index 00000000..b0ac11f6 --- /dev/null +++ b/themes/capro-tw/layouts/partials/sections/skill.html @@ -0,0 +1,48 @@ +{{ with .Site.GetPage "section" "skill" }} +{{ if gt (.Params.item | len) 0 }} +
+
+
+

{{ with .Title }}{{ index (split . " ") 0 | safeHTML }}{{ end }} {{ with .Title }}{{ after (len (index (split . " ") 0)) . | safeHTML }}{{ end }}

+
+
+ + {{ with .Params.subtitle }} +
+

{{ . | markdownify }}

+
+ {{ end }} + + {{ if .Content }} +
+ {{ .Content }} +
+ {{ end }} + +
+
+ {{ range first 1 (.Resources.ByType "image") }} + {{ $.Title }} + {{ end }} +
+
+ {{ range $index, $element := .Params.item }} +
+
+ + {{ if lt $index 9 }}0{{ end }}{{ add $index 1 }}- + {{ .name }} + + {{ .percent }} +
+
+
+
+
+ {{ end }} +
+
+
+
+{{ end }} +{{ end }} diff --git a/themes/capro-tw/layouts/partials/sections/team.html b/themes/capro-tw/layouts/partials/sections/team.html new file mode 100644 index 00000000..c70f67d9 --- /dev/null +++ b/themes/capro-tw/layouts/partials/sections/team.html @@ -0,0 +1,46 @@ +{{ with .Site.GetPage "section" "team" }} +{{ if gt (.Pages | len) 0 }} +
+
+
+

{{ with .Title }}{{ index (split . " ") 0 | safeHTML }}{{ end }} {{ with .Title }}{{ after (len (index (split . " ") 0)) . | safeHTML }}{{ end }}

+
+
+
+ {{ range .Pages | shuffle }} + {{ $sch := newScratch }} +
+
+ {{ if isset .Params "photo" }} + {{ $image := resources.GetRemote .Params.photo }} + {{ $image = $image.Fill "600x600 webp" | images.Filter (images.Grayscale) }} + {{ $sch.Set "img" $image.RelPermalink }} + {{ else }} + {{ range first 1 (.Resources.ByType "image") }} + {{ $image := (.Resize "600x webp").Fill "600x600 webp" | images.Filter (images.Grayscale) }} + {{ $sch.Set "img" $image.RelPermalink }} + {{ end }} + {{ end }} + {{ .Title }} + +
+
+

{{ .Title }}

+ {{ delimit .Params.designation " / " | markdownify }} +
{{ .Summary }}
+
+
+ {{ end }} +
+
+
+{{ end }} +{{ end }} diff --git a/themes/capro-tw/layouts/partials/sections/testimonial.html b/themes/capro-tw/layouts/partials/sections/testimonial.html new file mode 100644 index 00000000..3174d7e4 --- /dev/null +++ b/themes/capro-tw/layouts/partials/sections/testimonial.html @@ -0,0 +1,51 @@ +{{ with .Site.GetPage "section" "testimonial" }} +{{ if gt (.Pages | len) 0 }} +
+
+
+

{{ with .Title }}{{ index (split . " ") 0 | safeHTML }}{{ end }} {{ with .Title }}{{ after (len (index (split . " ") 0)) . | safeHTML }}{{ end }}

+
+
+
+ + +
+ {{ range .Pages | shuffle }} + {{ $sch := newScratch }} + {{ range first 1 (.Resources.ByType "image") }} + {{ $image := (.Resize "600x webp").Fill "300x300 webp" }} + {{ $sch.Set "img" $image.RelPermalink }} + {{ end }} +
+
+ +
+
+ {{ .Content }} +
+
+ {{ with $sch.Get "img" }} + {{ $.Params.author.name }} + {{ end }} +
+ {{ with .Params.author }} +

{{ .name }}

+

{{ .position }}

+ {{ end }} +

+ {{ with .Params.link }}{{ end }}{{ .Title }}{{ with .Params.link }}{{ end }} +

+
+
+
+ {{ end }} +
+
+
+
+{{ end }} +{{ end }} diff --git a/themes/capro-tw/layouts/redirect/single.html b/themes/capro-tw/layouts/redirect/single.html new file mode 100644 index 00000000..a3bfc8d1 --- /dev/null +++ b/themes/capro-tw/layouts/redirect/single.html @@ -0,0 +1,11 @@ +{{ define "head" }} + +{{ end }} + +{{ define "main" }} +
+
+

If you are not redirected, please follow this link.

+
+
+{{ end }} diff --git a/themes/capro-tw/layouts/team/single.html b/themes/capro-tw/layouts/team/single.html new file mode 100644 index 00000000..6b007190 --- /dev/null +++ b/themes/capro-tw/layouts/team/single.html @@ -0,0 +1,106 @@ +{{ define "main" }} +
+
+
+ {{ with .Site.GetPage "section" "team" }} +

{{ index (split .Params.single " ") 0 | safeHTML }} {{ index (split .Params.single " ") 1 | safeHTML }}

+ {{ end }} +
+
+
+ {{ if isset .Params "photo" }} + {{ $image := resources.GetRemote .Params.photo | .Fill "600x600" }} + {{ .Title }} + {{ else }} + {{ range first 1 (.Resources.ByType "image") }} + {{ $image := .Fill "600x600" }} + {{ $.Title }} + {{ end }} + {{ end }} +
+

{{ .Title }}

+
+
+
+
{{ .Content }}
+
+
+ {{ range .Params.Social }} + + + + {{ end }} +
+
+
+ +{{/* Posts by author */}} +{{ if gt (where site.RegularPages "Params.author" .Title | len) 0 }} +
+
+
+

{{ i18n "authorsPosts" }} {{ with .Site.GetPage "section" "team" }}{{ index (split .Params.single " ") 1 | safeHTML }}{{ end }}

+
+
+
+ {{ range where site.RegularPages "Params.author" .Title }} + {{ .Render "article" }} + {{ end }} +
+
+
+{{ end }} + +{{/* Publications from ORCID/OpenAlex */}} +{{ $orcid := "" }} +{{ range .Params.social }} + {{ if findRE "orcid\\.org" .link }} + {{ $orcid = replaceRE `.*/` "" .link }} + {{ end }} +{{ end }} + +{{ if $orcid }} +
+
+
+

{{ i18n "authorsPubs" }} {{ with .Site.GetPage "section" "team" }}{{ index (split .Params.single " ") 1 | safeHTML }}{{ end }}

+
+
+ +
+

Loading publications from OpenAlex...

+
+ + + + +
+
+{{ end }} +{{ end }} + +{{ define "scripts" }} +{{ $orcid := resources.Get "js/orcid-pubs.js" | minify | fingerprint }} + +{{ end }} diff --git a/themes/capro-tw/package-lock.json b/themes/capro-tw/package-lock.json new file mode 100644 index 00000000..22eca4b9 --- /dev/null +++ b/themes/capro-tw/package-lock.json @@ -0,0 +1,1057 @@ +{ + "name": "capro-tw", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "capro-tw", + "version": "1.0.0", + "hasInstallScript": true, + "dependencies": { + "@fontsource/space-grotesk": "^5.0.0", + "@fontsource/spectral": "^5.0.0", + "@fortawesome/fontawesome-free": "^6.7.0", + "@tailwindcss/cli": "^4.1.0", + "alpinejs": "^3.14.0", + "leaflet": "^1.9.0", + "tailwindcss": "^4.1.0" + } + }, + "node_modules/@fontsource/space-grotesk": { + "version": "5.2.10", + "resolved": "https://registry.npmjs.org/@fontsource/space-grotesk/-/space-grotesk-5.2.10.tgz", + "integrity": "sha512-XNXEbT74OIITPqw2H6HXwPDp85fy43uxfBwFR5PU+9sLnjuLj12KlhVM9nZVN6q6dlKjkuN8JisW/OBxwxgUew==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, + "node_modules/@fontsource/spectral": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/@fontsource/spectral/-/spectral-5.2.8.tgz", + "integrity": "sha512-0CqZ8/z8A38BdeSz5t2NSd5tCO1R9P1k7SF2VpRLMbZTMSSR6+2Dk0ZBMfEQK/IrBLQS1HgHLMqpdTwRpnKpGQ==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, + "node_modules/@fortawesome/fontawesome-free": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.7.2.tgz", + "integrity": "sha512-JUOtgFW6k9u4Y+xeIaEiLr3+cjoUPiAuLXoyKOJSia6Duzb7pq+A76P9ZdPDoAoxHdHzq6gE9/jKBGXlZT8FbA==", + "license": "(CC-BY-4.0 AND OFL-1.1 AND MIT)", + "engines": { + "node": ">=6" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz", + "integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.3", + "is-glob": "^4.0.3", + "node-addon-api": "^7.0.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.6", + "@parcel/watcher-darwin-arm64": "2.5.6", + "@parcel/watcher-darwin-x64": "2.5.6", + "@parcel/watcher-freebsd-x64": "2.5.6", + "@parcel/watcher-linux-arm-glibc": "2.5.6", + "@parcel/watcher-linux-arm-musl": "2.5.6", + "@parcel/watcher-linux-arm64-glibc": "2.5.6", + "@parcel/watcher-linux-arm64-musl": "2.5.6", + "@parcel/watcher-linux-x64-glibc": "2.5.6", + "@parcel/watcher-linux-x64-musl": "2.5.6", + "@parcel/watcher-win32-arm64": "2.5.6", + "@parcel/watcher-win32-ia32": "2.5.6", + "@parcel/watcher-win32-x64": "2.5.6" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz", + "integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz", + "integrity": "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz", + "integrity": "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz", + "integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz", + "integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz", + "integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz", + "integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz", + "integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz", + "integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz", + "integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz", + "integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz", + "integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz", + "integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@tailwindcss/cli": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/cli/-/cli-4.2.2.tgz", + "integrity": "sha512-iJS+8kAFZ8HPqnh0O5DHCLjo4L6dD97DBQEkrhfSO4V96xeefUus2jqsBs1dUMt3OU9Ks4qIkiY0mpL5UW+4LQ==", + "license": "MIT", + "dependencies": { + "@parcel/watcher": "^2.5.1", + "@tailwindcss/node": "4.2.2", + "@tailwindcss/oxide": "4.2.2", + "enhanced-resolve": "^5.19.0", + "mri": "^1.2.0", + "picocolors": "^1.1.1", + "tailwindcss": "4.2.2" + }, + "bin": { + "tailwindcss": "dist/index.mjs" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.2.2.tgz", + "integrity": "sha512-pXS+wJ2gZpVXqFaUEjojq7jzMpTGf8rU6ipJz5ovJV6PUGmlJ+jvIwGrzdHdQ80Sg+wmQxUFuoW1UAAwHNEdFA==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.19.0", + "jiti": "^2.6.1", + "lightningcss": "1.32.0", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.2.2" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.2.2.tgz", + "integrity": "sha512-qEUA07+E5kehxYp9BVMpq9E8vnJuBHfJEC0vPC5e7iL/hw7HR61aDKoVoKzrG+QKp56vhNZe4qwkRmMC0zDLvg==", + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.2.2", + "@tailwindcss/oxide-darwin-arm64": "4.2.2", + "@tailwindcss/oxide-darwin-x64": "4.2.2", + "@tailwindcss/oxide-freebsd-x64": "4.2.2", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.2", + "@tailwindcss/oxide-linux-arm64-gnu": "4.2.2", + "@tailwindcss/oxide-linux-arm64-musl": "4.2.2", + "@tailwindcss/oxide-linux-x64-gnu": "4.2.2", + "@tailwindcss/oxide-linux-x64-musl": "4.2.2", + "@tailwindcss/oxide-wasm32-wasi": "4.2.2", + "@tailwindcss/oxide-win32-arm64-msvc": "4.2.2", + "@tailwindcss/oxide-win32-x64-msvc": "4.2.2" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.2.2.tgz", + "integrity": "sha512-dXGR1n+P3B6748jZO/SvHZq7qBOqqzQ+yFrXpoOWWALWndF9MoSKAT3Q0fYgAzYzGhxNYOoysRvYlpixRBBoDg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.2.2.tgz", + "integrity": "sha512-iq9Qjr6knfMpZHj55/37ouZeykwbDqF21gPFtfnhCCKGDcPI/21FKC9XdMO/XyBM7qKORx6UIhGgg6jLl7BZlg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.2.2.tgz", + "integrity": "sha512-BlR+2c3nzc8f2G639LpL89YY4bdcIdUmiOOkv2GQv4/4M0vJlpXEa0JXNHhCHU7VWOKWT/CjqHdTP8aUuDJkuw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.2.2.tgz", + "integrity": "sha512-YUqUgrGMSu2CDO82hzlQ5qSb5xmx3RUrke/QgnoEx7KvmRJHQuZHZmZTLSuuHwFf0DJPybFMXMYf+WJdxHy/nQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.2.2.tgz", + "integrity": "sha512-FPdhvsW6g06T9BWT0qTwiVZYE2WIFo2dY5aCSpjG/S/u1tby+wXoslXS0kl3/KXnULlLr1E3NPRRw0g7t2kgaQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.2.2.tgz", + "integrity": "sha512-4og1V+ftEPXGttOO7eCmW7VICmzzJWgMx+QXAJRAhjrSjumCwWqMfkDrNu1LXEQzNAwz28NCUpucgQPrR4S2yw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.2.2.tgz", + "integrity": "sha512-oCfG/mS+/+XRlwNjnsNLVwnMWYH7tn/kYPsNPh+JSOMlnt93mYNCKHYzylRhI51X+TbR+ufNhhKKzm6QkqX8ag==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.2.2.tgz", + "integrity": "sha512-rTAGAkDgqbXHNp/xW0iugLVmX62wOp2PoE39BTCGKjv3Iocf6AFbRP/wZT/kuCxC9QBh9Pu8XPkv/zCZB2mcMg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.2.2.tgz", + "integrity": "sha512-XW3t3qwbIwiSyRCggeO2zxe3KWaEbM0/kW9e8+0XpBgyKU4ATYzcVSMKteZJ1iukJ3HgHBjbg9P5YPRCVUxlnQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.2.2.tgz", + "integrity": "sha512-eKSztKsmEsn1O5lJ4ZAfyn41NfG7vzCg496YiGtMDV86jz1q/irhms5O0VrY6ZwTUkFy/EKG3RfWgxSI3VbZ8Q==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.8.1", + "@emnapi/runtime": "^1.8.1", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.1.1", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.2.2.tgz", + "integrity": "sha512-qPmaQM4iKu5mxpsrWZMOZRgZv1tOZpUm+zdhhQP0VhJfyGGO3aUKdbh3gDZc/dPLQwW4eSqWGrrcWNBZWUWaXQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.2.2.tgz", + "integrity": "sha512-1T/37VvI7WyH66b+vqHj/cLwnCxt7Qt3WFu5Q8hk65aOvlwAhs7rAp1VkulBJw/N4tMirXjVnylTR72uI0HGcA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.1.5.tgz", + "integrity": "sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.1.5" + } + }, + "node_modules/@vue/shared": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.5.tgz", + "integrity": "sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==", + "license": "MIT" + }, + "node_modules/alpinejs": { + "version": "3.15.8", + "resolved": "https://registry.npmjs.org/alpinejs/-/alpinejs-3.15.8.tgz", + "integrity": "sha512-zxIfCRTBGvF1CCLIOMQOxAyBuqibxSEwS6Jm1a3HGA9rgrJVcjEWlwLcQTVGAWGS8YhAsTRLVrtQ5a5QT9bSSQ==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "~3.1.1" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", + "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/leaflet": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", + "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==", + "license": "BSD-2-Clause" + }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tailwindcss": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.2.2.tgz", + "integrity": "sha512-KWBIxs1Xb6NoLdMVqhbhgwZf2PGBpPEiwOqgI4pFIYbNTfBXiKYyWoTsXgBQ9WFg/OlhnvHaY+AEpW7wSmFo2Q==", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.1.tgz", + "integrity": "sha512-b+u3CEM6FjDHru+nhUSjDofpWSBp2rINziJWgApm72wwGasQ/wKXftZe4tI2Y5HPv6OpzXSZHOFq87H4vfsgsw==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + } + } +} diff --git a/themes/capro-tw/package.json b/themes/capro-tw/package.json new file mode 100644 index 00000000..e7099b2f --- /dev/null +++ b/themes/capro-tw/package.json @@ -0,0 +1,27 @@ +{ + "name": "capro-tw", + "private": true, + "version": "1.0.0", + "scripts": { + "clean": "rm -rf assets/css/vendor assets/js/vendor assets/scss/vendor static/webfonts", + "setup": "mkdir -p assets/css/vendor assets/js/vendor assets/scss/vendor static/webfonts/fontawesome static/webfonts/google-fonts/space-grotesk static/webfonts/google-fonts/spectral", + "build": "npm run clean && npm run setup && npm run build:css && npm run sync:deps", + "build:css": "npx @tailwindcss/cli -i assets/css/main.css -o assets/css/vendor/tailwind.css --minify", + "sync:deps": "npm run sync:alpine && npm run sync:leaflet && npm run sync:fontawesome && npm run sync:fonts", + "sync:alpine": "cp node_modules/alpinejs/dist/cdn.min.js assets/js/vendor/alpine.min.js", + "sync:leaflet": "cp node_modules/leaflet/dist/leaflet.js assets/js/vendor/leaflet.js && cp node_modules/leaflet/dist/leaflet.css assets/css/vendor/leaflet.css && mkdir -p static/webfonts/leaflet && cp node_modules/leaflet/dist/images/* static/webfonts/leaflet/", + "sync:fontawesome": "cp node_modules/@fortawesome/fontawesome-free/webfonts/*.woff2 static/webfonts/fontawesome/ && cp -r node_modules/@fortawesome/fontawesome-free/scss/* assets/scss/vendor/", + "sync:fonts": "cp node_modules/@fontsource/space-grotesk/files/space-grotesk-latin-*-normal.woff2 static/webfonts/google-fonts/space-grotesk/ && cp node_modules/@fontsource/spectral/files/spectral-latin-*-normal.woff2 static/webfonts/google-fonts/spectral/ 2>/dev/null || true", + "update": "npm update && npm run build", + "postinstall": "npm run build" + }, + "dependencies": { + "@tailwindcss/cli": "^4.1.0", + "tailwindcss": "^4.1.0", + "alpinejs": "^3.14.0", + "@fortawesome/fontawesome-free": "^6.7.0", + "@fontsource/space-grotesk": "^5.0.0", + "@fontsource/spectral": "^5.0.0", + "leaflet": "^1.9.0" + } +} diff --git a/themes/capro-tw/static/webfonts/fontawesome/fa-brands-400.woff2 b/themes/capro-tw/static/webfonts/fontawesome/fa-brands-400.woff2 new file mode 100644 index 00000000..3c5cf97e Binary files /dev/null and b/themes/capro-tw/static/webfonts/fontawesome/fa-brands-400.woff2 differ diff --git a/themes/capro-tw/static/webfonts/fontawesome/fa-regular-400.woff2 b/themes/capro-tw/static/webfonts/fontawesome/fa-regular-400.woff2 new file mode 100644 index 00000000..57d91796 Binary files /dev/null and b/themes/capro-tw/static/webfonts/fontawesome/fa-regular-400.woff2 differ diff --git a/themes/capro-tw/static/webfonts/fontawesome/fa-solid-900.woff2 b/themes/capro-tw/static/webfonts/fontawesome/fa-solid-900.woff2 new file mode 100644 index 00000000..16721020 Binary files /dev/null and b/themes/capro-tw/static/webfonts/fontawesome/fa-solid-900.woff2 differ diff --git a/themes/capro-tw/static/webfonts/fontawesome/fa-v4compatibility.woff2 b/themes/capro-tw/static/webfonts/fontawesome/fa-v4compatibility.woff2 new file mode 100644 index 00000000..fbafb222 Binary files /dev/null and b/themes/capro-tw/static/webfonts/fontawesome/fa-v4compatibility.woff2 differ diff --git a/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-300-normal.woff2 b/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-300-normal.woff2 new file mode 100644 index 00000000..8a92c4a9 Binary files /dev/null and b/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-300-normal.woff2 differ diff --git a/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-400-normal.woff2 b/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-400-normal.woff2 new file mode 100644 index 00000000..0e634711 Binary files /dev/null and b/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-400-normal.woff2 differ diff --git a/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-500-normal.woff2 b/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-500-normal.woff2 new file mode 100644 index 00000000..0db251fc Binary files /dev/null and b/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-500-normal.woff2 differ diff --git a/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-600-normal.woff2 b/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-600-normal.woff2 new file mode 100644 index 00000000..a1db41a0 Binary files /dev/null and b/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-600-normal.woff2 differ diff --git a/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-700-normal.woff2 b/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-700-normal.woff2 new file mode 100644 index 00000000..44604a0b Binary files /dev/null and b/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-700-normal.woff2 differ diff --git a/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-ext-300-normal.woff2 b/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-ext-300-normal.woff2 new file mode 100644 index 00000000..d146b5d9 Binary files /dev/null and b/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-ext-300-normal.woff2 differ diff --git a/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-ext-400-normal.woff2 b/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-ext-400-normal.woff2 new file mode 100644 index 00000000..de4425ff Binary files /dev/null and b/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-ext-400-normal.woff2 differ diff --git a/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-ext-500-normal.woff2 b/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-ext-500-normal.woff2 new file mode 100644 index 00000000..09057810 Binary files /dev/null and b/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-ext-500-normal.woff2 differ diff --git a/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-ext-600-normal.woff2 b/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-ext-600-normal.woff2 new file mode 100644 index 00000000..2438b7a4 Binary files /dev/null and b/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-ext-600-normal.woff2 differ diff --git a/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-ext-700-normal.woff2 b/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-ext-700-normal.woff2 new file mode 100644 index 00000000..332a5ee8 Binary files /dev/null and b/themes/capro-tw/static/webfonts/google-fonts/space-grotesk/space-grotesk-latin-ext-700-normal.woff2 differ diff --git a/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-200-normal.woff2 b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-200-normal.woff2 new file mode 100644 index 00000000..61489a3d Binary files /dev/null and b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-200-normal.woff2 differ diff --git a/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-300-normal.woff2 b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-300-normal.woff2 new file mode 100644 index 00000000..8d12931f Binary files /dev/null and b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-300-normal.woff2 differ diff --git a/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-400-normal.woff2 b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-400-normal.woff2 new file mode 100644 index 00000000..71700f80 Binary files /dev/null and b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-400-normal.woff2 differ diff --git a/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-500-normal.woff2 b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-500-normal.woff2 new file mode 100644 index 00000000..440edbb7 Binary files /dev/null and b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-500-normal.woff2 differ diff --git a/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-600-normal.woff2 b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-600-normal.woff2 new file mode 100644 index 00000000..3f56161f Binary files /dev/null and b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-600-normal.woff2 differ diff --git a/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-700-normal.woff2 b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-700-normal.woff2 new file mode 100644 index 00000000..615536f5 Binary files /dev/null and b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-700-normal.woff2 differ diff --git a/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-800-normal.woff2 b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-800-normal.woff2 new file mode 100644 index 00000000..62dbd7c0 Binary files /dev/null and b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-800-normal.woff2 differ diff --git a/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-ext-200-normal.woff2 b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-ext-200-normal.woff2 new file mode 100644 index 00000000..7be03d7a Binary files /dev/null and b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-ext-200-normal.woff2 differ diff --git a/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-ext-300-normal.woff2 b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-ext-300-normal.woff2 new file mode 100644 index 00000000..033c605c Binary files /dev/null and b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-ext-300-normal.woff2 differ diff --git a/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-ext-400-normal.woff2 b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-ext-400-normal.woff2 new file mode 100644 index 00000000..78c4c009 Binary files /dev/null and b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-ext-400-normal.woff2 differ diff --git a/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-ext-500-normal.woff2 b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-ext-500-normal.woff2 new file mode 100644 index 00000000..0dbd5367 Binary files /dev/null and b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-ext-500-normal.woff2 differ diff --git a/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-ext-600-normal.woff2 b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-ext-600-normal.woff2 new file mode 100644 index 00000000..16fb98f5 Binary files /dev/null and b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-ext-600-normal.woff2 differ diff --git a/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-ext-700-normal.woff2 b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-ext-700-normal.woff2 new file mode 100644 index 00000000..25a42b75 Binary files /dev/null and b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-ext-700-normal.woff2 differ diff --git a/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-ext-800-normal.woff2 b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-ext-800-normal.woff2 new file mode 100644 index 00000000..d4766fc8 Binary files /dev/null and b/themes/capro-tw/static/webfonts/google-fonts/spectral/spectral-latin-ext-800-normal.woff2 differ diff --git a/themes/capro-tw/static/webfonts/leaflet/layers-2x.png b/themes/capro-tw/static/webfonts/leaflet/layers-2x.png new file mode 100644 index 00000000..200c333d Binary files /dev/null and b/themes/capro-tw/static/webfonts/leaflet/layers-2x.png differ diff --git a/themes/capro-tw/static/webfonts/leaflet/layers.png b/themes/capro-tw/static/webfonts/leaflet/layers.png new file mode 100644 index 00000000..1a72e578 Binary files /dev/null and b/themes/capro-tw/static/webfonts/leaflet/layers.png differ diff --git a/themes/capro-tw/static/webfonts/leaflet/marker-icon-2x.png b/themes/capro-tw/static/webfonts/leaflet/marker-icon-2x.png new file mode 100644 index 00000000..88f9e501 Binary files /dev/null and b/themes/capro-tw/static/webfonts/leaflet/marker-icon-2x.png differ diff --git a/themes/capro-tw/static/webfonts/leaflet/marker-icon.png b/themes/capro-tw/static/webfonts/leaflet/marker-icon.png new file mode 100644 index 00000000..950edf24 Binary files /dev/null and b/themes/capro-tw/static/webfonts/leaflet/marker-icon.png differ diff --git a/themes/capro-tw/static/webfonts/leaflet/marker-shadow.png b/themes/capro-tw/static/webfonts/leaflet/marker-shadow.png new file mode 100644 index 00000000..9fd29795 Binary files /dev/null and b/themes/capro-tw/static/webfonts/leaflet/marker-shadow.png differ diff --git a/themes/capro-tw/theme.toml b/themes/capro-tw/theme.toml new file mode 100644 index 00000000..504aff6d --- /dev/null +++ b/themes/capro-tw/theme.toml @@ -0,0 +1,12 @@ +name = "capro-tw" +description = "CAPRO Hugo theme with Tailwind CSS and Alpine.js. Visual design inspired by the capro-hugo theme, originally based on the Timer theme by Themefisher." +license = "MIT" +min_version = "0.154.0" + +[author] + name = "CAPRO" + +[original] + author = "Themefisher" + homepage = "https://themefisher.com" + repo = "https://github.com/themefisher/timer-hugo"