diff --git a/.github/workflows/gh-jekyll-workflow.yml b/.github/workflows/gh-jekyll-workflow.yml new file mode 100644 index 0000000..21f0b5e --- /dev/null +++ b/.github/workflows/gh-jekyll-workflow.yml @@ -0,0 +1,59 @@ +# Sample workflow for building and deploying a Jekyll site to GitHub Pages +name: Deploy Jekyll with GitHub Pages dependencies preinstalled + +env: + GITHUB_TOKEN: ${{ secrets.PAT_TOKEN_WEBSITE_COMMON }} + +on: + # Runs on pushes targeting the default branch + push: + branches: ["redesign"] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + # Build job + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Pages + uses: actions/configure-pages@v5 + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: '3.3' + bundler-cache: true + - name: Install dependencies + run: bundle install + - name: Build with Jekyll (with custom plugins) + run: bundle exec jekyll build --trace + env: + JEKYLL_ENV: production + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v5 diff --git a/.gitignore b/.gitignore index ce89292..ff744da 100644 --- a/.gitignore +++ b/.gitignore @@ -1,418 +1,4 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore - -# User-specific files -*.rsuser -*.suo -*.user -*.userosscache -*.sln.docstates -*.env - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Mono auto generated files -mono_crash.* - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -[Ww][Ii][Nn]32/ -[Aa][Rr][Mm]/ -[Aa][Rr][Mm]64/ -[Aa][Rr][Mm]64[Ee][Cc]/ -bld/ -[Oo]bj/ -[Oo]ut/ -[Ll]og/ -[Ll]ogs/ - -# Build results on 'Bin' directories -**/[Bb]in/* -# Uncomment if you have tasks that rely on *.refresh files to move binaries -# (https://github.com/github/gitignore/pull/3736) -#!**/[Bb]in/*.refresh - -# Visual Studio 2015/2017 cache/options directory .vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* -*.trx - -# NUnit -*.VisualState.xml -TestResult.xml -nunit-*.xml - -# Approval Tests result files -*.received.* - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET Core -project.lock.json -project.fragment.lock.json -artifacts/ - -# ASP.NET Scaffolding -ScaffoldingReadMe.txt - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_h.h -*.ilk -*.meta -*.obj -*.idb -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -# but not Directory.Build.rsp, as it configures directory-level build defaults -!Directory.Build.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*_wpftmp.csproj -*.log -*.tlog -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Coverlet is a free, cross platform Code Coverage Tool -coverage*.json -coverage*.xml -coverage*.info - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# NuGet Symbol Packages -*.snupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx -*.appxbundle -*.appxupload - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!?*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser -*- [Bb]ackup.rdl -*- [Bb]ackup ([0-9]).rdl -*- [Bb]ackup ([0-9][0-9]).rdl - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio 6 auto-generated project file (contains which files were open etc.) -*.vbp - -# Visual Studio 6 workspace and project file (working project files containing files to include in project) -*.dsw -*.dsp - -# Visual Studio 6 technical files -*.ncb -*.aps - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -**/.paket/paket.exe -paket-files/ - -# FAKE - F# Make -**/.fake/ - -# CodeRush personal settings -**/.cr/personal - -# Python Tools for Visual Studio (PTVS) -**/__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -#tools/** -#!tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog -MSBuild_Logs/ - -# AWS SAM Build and Temporary Artifacts folder -.aws-sam - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -**/.mfractor/ - -# Local History for Visual Studio -**/.localhistory/ - -# Visual Studio History (VSHistory) files -.vshistory/ - -# BeatPulse healthcheck temp database -healthchecksdb - -# Backup folder for Package Reference Convert tool in Visual Studio 2017 -MigrationBackup/ - -# Ionide (cross platform F# VS Code tools) working folder -**/.ionide/ - -# Fody - auto-generated XML schema -FodyWeavers.xsd - -# VS Code files for those working on multiple tools -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json -!.vscode/*.code-snippets - -# Local History for Visual Studio Code -.history/ - -# Built Visual Studio Code Extensions -*.vsix - -# Windows Installer files from build outputs -*.cab -*.msi -*.msix -*.msm -*.msp +.jekyll-cache/ +_site/ +.DS_Store diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..afb0f83 --- /dev/null +++ b/Gemfile @@ -0,0 +1,21 @@ +source "https://rubygems.org" + +platform :windows do + gem 'wdm', '>= 0.1.0' +end + +if ENV['GITHUB_ACTIONS'] == 'true' + gem "pwindows-theme", git: "https://#{ENV['GITHUB_TOKEN']}@github.com/PWindows/Website-Common.git" +else + gem "pwindows-theme", git: "https://github.com/PWindows/Website-Common.git" +end + +gem "jekyll", "~> 4.4" +gem "webrick" + +group :jekyll_plugins do + gem "jekyll-polyglot" +end + +gem "html-proofer", "~> 5.0" +gem "nokogiri", "~> 1.19" diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..7cea748 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,294 @@ +GIT + remote: https://github.com/PWindows/Website-Common.git + revision: bec7b3da2b4cd2541139cdcac7a3d13e0b5363ca + specs: + pwindows-theme (1.0.0) + jekyll (~> 4.4) + +GEM + remote: https://rubygems.org/ + specs: + Ascii85 (2.0.1) + addressable (2.9.0) + public_suffix (>= 2.0.2, < 8.0) + afm (1.0.0) + async (2.43.0) + console (~> 1.29) + fiber-annotation + io-event (~> 1.11) + base64 (0.3.0) + benchmark (0.5.0) + bigdecimal (3.3.1) + colorator (1.1.0) + concurrent-ruby (1.3.8) + console (1.37.0) + fiber-annotation + fiber-local (~> 1.1) + json + csv (3.3.5) + em-websocket (0.5.3) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0) + ethon (0.18.0) + ffi (>= 1.15.0) + logger + eventmachine (1.2.7) + ffi (1.17.4-aarch64-linux-gnu) + ffi (1.17.4-aarch64-linux-musl) + ffi (1.17.4-arm-linux-gnu) + ffi (1.17.4-arm-linux-musl) + ffi (1.17.4-arm64-darwin) + ffi (1.17.4-x86_64-darwin) + ffi (1.17.4-x86_64-linux-gnu) + ffi (1.17.4-x86_64-linux-musl) + fiber-annotation (0.2.0) + fiber-local (1.1.0) + fiber-storage + fiber-storage (1.0.1) + forwardable-extended (2.6.0) + google-protobuf (4.35.1) + bigdecimal + rake (~> 13.3) + google-protobuf (4.35.1-aarch64-linux-gnu) + bigdecimal + rake (~> 13.3) + google-protobuf (4.35.1-aarch64-linux-musl) + bigdecimal + rake (~> 13.3) + google-protobuf (4.35.1-arm64-darwin) + bigdecimal + rake (~> 13.3) + google-protobuf (4.35.1-x86_64-darwin) + bigdecimal + rake (~> 13.3) + google-protobuf (4.35.1-x86_64-linux-gnu) + bigdecimal + rake (~> 13.3) + google-protobuf (4.35.1-x86_64-linux-musl) + bigdecimal + rake (~> 13.3) + hashery (2.1.2) + html-proofer (5.2.1) + addressable (~> 2.3) + async (~> 2.1) + benchmark (~> 0.5) + nokogiri (~> 1.13) + pdf-reader (~> 2.11) + rainbow (~> 3.0) + typhoeus (~> 1.3) + yell (~> 2.0) + zeitwerk (~> 2.5) + http_parser.rb (0.8.1) + i18n (1.15.2) + concurrent-ruby (~> 1.0) + io-event (1.19.3) + jekyll (4.4.1) + addressable (~> 2.4) + base64 (~> 0.2) + colorator (~> 1.0) + csv (~> 3.0) + em-websocket (~> 0.5) + i18n (~> 1.0) + jekyll-sass-converter (>= 2.0, < 4.0) + jekyll-watch (~> 2.0) + json (~> 2.6) + kramdown (~> 2.3, >= 2.3.1) + kramdown-parser-gfm (~> 1.0) + liquid (~> 4.0) + mercenary (~> 0.3, >= 0.3.6) + pathutil (~> 0.9) + rouge (>= 3.0, < 5.0) + safe_yaml (~> 1.0) + terminal-table (>= 1.8, < 4.0) + webrick (~> 1.7) + jekyll-polyglot (1.13.0) + jekyll (>= 4.0, >= 3.0) + jekyll-sass-converter (3.1.0) + sass-embedded (~> 1.75) + jekyll-watch (2.2.1) + listen (~> 3.0) + json (2.21.1) + kramdown (2.5.2) + rexml (>= 3.4.4) + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.4) + listen (3.10.0) + logger + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + logger (1.7.0) + mercenary (0.4.0) + nokogiri (1.19.4-aarch64-linux-gnu) + racc (~> 1.4) + nokogiri (1.19.4-aarch64-linux-musl) + racc (~> 1.4) + nokogiri (1.19.4-arm-linux-gnu) + racc (~> 1.4) + nokogiri (1.19.4-arm-linux-musl) + racc (~> 1.4) + nokogiri (1.19.4-arm64-darwin) + racc (~> 1.4) + nokogiri (1.19.4-x86_64-darwin) + racc (~> 1.4) + nokogiri (1.19.4-x86_64-linux-gnu) + racc (~> 1.4) + nokogiri (1.19.4-x86_64-linux-musl) + racc (~> 1.4) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + pdf-reader (2.15.1) + Ascii85 (>= 1.0, < 3.0, != 2.0.0) + afm (>= 0.2.1, < 2) + hashery (~> 2.0) + ruby-rc4 + ttfunk + public_suffix (7.0.5) + racc (1.8.1) + rainbow (3.1.1) + rake (13.4.2) + rb-fsevent (0.11.2) + rb-inotify (0.11.1) + ffi (~> 1.0) + rexml (3.4.4) + rouge (4.7.0) + ruby-rc4 (0.1.5) + safe_yaml (1.0.5) + sass-embedded (1.101.6-aarch64-linux-gnu) + google-protobuf (~> 4.31) + sass-embedded (1.101.6-aarch64-linux-musl) + google-protobuf (~> 4.31) + sass-embedded (1.101.6-arm-linux-gnueabihf) + google-protobuf (~> 4.31) + sass-embedded (1.101.6-arm-linux-musleabihf) + google-protobuf (~> 4.31) + sass-embedded (1.101.6-arm64-darwin) + google-protobuf (~> 4.31) + sass-embedded (1.101.6-x86_64-darwin) + google-protobuf (~> 4.31) + sass-embedded (1.101.6-x86_64-linux-gnu) + google-protobuf (~> 4.31) + sass-embedded (1.101.6-x86_64-linux-musl) + google-protobuf (~> 4.31) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) + ttfunk (1.8.0) + bigdecimal (~> 3.1) + typhoeus (1.6.0) + ethon (>= 0.18.0) + unicode-display_width (2.6.0) + webrick (1.9.2) + yell (2.2.2) + zeitwerk (2.8.2) + +PLATFORMS + aarch64-linux-gnu + aarch64-linux-musl + arm-linux-gnu + arm-linux-gnueabihf + arm-linux-musl + arm-linux-musleabihf + arm64-darwin + x86_64-darwin + x86_64-linux-gnu + x86_64-linux-musl + +DEPENDENCIES + html-proofer (~> 5.0) + jekyll (~> 4.4) + jekyll-polyglot + nokogiri (~> 1.19) + pwindows-theme! + wdm (>= 0.1.0) + webrick + +CHECKSUMS + Ascii85 (2.0.1) sha256=15cb5d941808543cbb9e7e6aea3c8ec3877f154c3461e8b3673e97f7ecedbe5a + addressable (2.9.0) sha256=7fdf6ac3660f7f4e867a0838be3f6cf722ace541dd97767fa42bc6cfa980c7af + afm (1.0.0) sha256=5bd4d6f6241e7014ef090985ec6f4c3e9745f6de0828ddd58bc1efdd138f4545 + async (2.43.0) sha256=c3a6bd7ebb56a02b19eaa3b8ca26fced4397554bcd8c5d5046be5ee5598c452d + base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b + benchmark (0.5.0) sha256=465df122341aedcb81a2a24b4d3bd19b6c67c1530713fd533f3ff034e419236c + bigdecimal (3.3.1) sha256=eaa01e228be54c4f9f53bf3cc34fe3d5e845c31963e7fcc5bedb05a4e7d52218 + bundler (4.0.11) sha256=5bcec0fb78302e48d02ee46f10ee6e6942be647ba5b44a6d1ddfda9a240ce785 + colorator (1.1.0) sha256=e2f85daf57af47d740db2a32191d1bdfb0f6503a0dfbc8327d0c9154d5ddfc38 + concurrent-ruby (1.3.8) sha256=b2f1be836e968ccc78ccfce277ea79c72a88633f22306782c16ff23fb415d1e1 + console (1.37.0) sha256=8093b286c2595a063849c098594fee5155ecc7967d36f3aa8cbe7569c8f3efd7 + csv (3.3.5) sha256=6e5134ac3383ef728b7f02725d9872934f523cb40b961479f69cf3afa6c8e73f + em-websocket (0.5.3) sha256=f56a92bde4e6cb879256d58ee31f124181f68f8887bd14d53d5d9a292758c6a8 + ethon (0.18.0) sha256=b598afc9f30448cb068b850714b7d6948e941476095d04f90a4ac65b8d6efcb2 + eventmachine (1.2.7) sha256=994016e42aa041477ba9cff45cbe50de2047f25dd418eba003e84f0d16560972 + ffi (1.17.4-aarch64-linux-gnu) sha256=b208f06f91ffd8f5e1193da3cae3d2ccfc27fc36fba577baf698d26d91c080df + ffi (1.17.4-aarch64-linux-musl) sha256=9286b7a615f2676245283aef0a0a3b475ae3aae2bb5448baace630bb77b91f39 + ffi (1.17.4-arm-linux-gnu) sha256=d6dbddf7cb77bf955411af5f187a65b8cd378cb003c15c05697f5feee1cb1564 + ffi (1.17.4-arm-linux-musl) sha256=9d4838ded0465bef6e2426935f6bcc93134b6616785a84ffd2a3d82bc3cf6f95 + ffi (1.17.4-arm64-darwin) sha256=19071aaf1419251b0a46852abf960e77330a3b334d13a4ab51d58b31a937001b + ffi (1.17.4-x86_64-darwin) sha256=aa70390523cf3235096cf64962b709b4cfbd5c082a2cb2ae714eb0fe2ccda496 + ffi (1.17.4-x86_64-linux-gnu) sha256=9d3db14c2eae074b382fa9c083fe95aec6e0a1451da249eab096c34002bc752d + ffi (1.17.4-x86_64-linux-musl) sha256=3fdf9888483de005f8ef8d1cf2d3b20d86626af206cbf780f6a6a12439a9c49e + fiber-annotation (0.2.0) sha256=7abfadf1d119f508867d4103bf231c0354d019cc39a5738945dec2edadaf6c03 + fiber-local (1.1.0) sha256=c885f94f210fb9b05737de65d511136ea602e00c5105953748aa0f8793489f06 + fiber-storage (1.0.1) sha256=f48e5b6d8b0be96dac486332b55cee82240057065dc761c1ea692b2e719240e1 + forwardable-extended (2.6.0) sha256=1bec948c469bbddfadeb3bd90eb8c85f6e627a412a3e852acfd7eaedbac3ec97 + google-protobuf (4.35.1) sha256=a3a6471331d918f58dfa4d014a8f6286f0af2cf4840216bde52fcf2ea3fe3726 + google-protobuf (4.35.1-aarch64-linux-gnu) sha256=50ca44d0eeff3f8475e630a1accdd974256f3510694d574e2c9d6119ea8bc9e1 + google-protobuf (4.35.1-aarch64-linux-musl) sha256=d5c65cef6bd6498a9e5ed5f88cf6cf7e341c10b0a005e32137d5d1a2b6e8c18a + google-protobuf (4.35.1-arm64-darwin) sha256=d9c957df04fa89c749fa9a72a7b383eb4296efc9b2303dc6fd6fbe39c698ad6b + google-protobuf (4.35.1-x86_64-darwin) sha256=66b62b4df00931018a692806df66393efa960d6d2b7da69735187249f950d3ee + google-protobuf (4.35.1-x86_64-linux-gnu) sha256=c786439087512a3fbd199e9897d265b855f951d4027e218ea55e858d45969edd + google-protobuf (4.35.1-x86_64-linux-musl) sha256=91890eb0002934a339fdb7d77a147c46b7474b6799db27872b747b905837f744 + hashery (2.1.2) sha256=d239cc2310401903f6b79d458c2bbef5bf74c46f3f974ae9c1061fb74a404862 + html-proofer (5.2.1) sha256=fdd958a7cbf9c3255fb96fe7cfc4e611f64e2706e469488a3326309ad007d2fd + http_parser.rb (0.8.1) sha256=9ae8df145b39aa5398b2f90090d651c67bd8e2ebfe4507c966579f641e11097a + i18n (1.15.2) sha256=00f9eb62412fe593b2a65a97daa75300d37abb8f7202ec748e94b6d46a9dd1b5 + io-event (1.19.3) sha256=0fe24f0fe334ad39cf61a290131c54f8848184c0d166cea86ffae2d6548339d3 + jekyll (4.4.1) sha256=4c1144d857a5b2b80d45b8cf5138289579a9f8136aadfa6dd684b31fe2bc18c1 + jekyll-polyglot (1.13.0) sha256=a5667e78b587e75b9705d387c6709e5e2237f7e0ddc471afa32094974add8ee4 + jekyll-sass-converter (3.1.0) sha256=83925d84f1d134410c11d0c6643b0093e82e3a3cf127e90757a85294a3862443 + jekyll-watch (2.2.1) sha256=bc44ed43f5e0a552836245a54dbff3ea7421ecc2856707e8a1ee203a8387a7e1 + json (2.21.1) sha256=13a43df75d95641443f5702dff350f237164a9d811ff0f2c2800d4d980220583 + kramdown (2.5.2) sha256=1ba542204c66b6f9111ff00dcc26075b95b220b07f2905d8261740c82f7f02fa + kramdown-parser-gfm (1.1.0) sha256=fb39745516427d2988543bf01fc4cf0ab1149476382393e0e9c48592f6581729 + liquid (4.0.4) sha256=4fcfebb1a045e47918388dbb7a0925e7c3893e58d2bd6c3b3c73ec17a2d8fdb3 + listen (3.10.0) sha256=c6e182db62143aeccc2e1960033bebe7445309c7272061979bb098d03760c9d2 + logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203 + mercenary (0.4.0) sha256=b25a1e4a59adca88665e08e24acf0af30da5b5d859f7d8f38fba52c28f405138 + nokogiri (1.19.4-aarch64-linux-gnu) sha256=1269fb644a6de405057a53dd5c762b1209b43ca7424f839454d3dbc677c31a8f + nokogiri (1.19.4-aarch64-linux-musl) sha256=35c65b9ce72b3bb03207bdbe7067915019dc18c1b9b59139684bd6690fdd01af + nokogiri (1.19.4-arm-linux-gnu) sha256=a301313e38bb065d68239e79734bcd6f56fb6efaacebde29e9abf2a4735340ca + nokogiri (1.19.4-arm-linux-musl) sha256=588923c101bcfa78869734d247d25b598674323e7f22474fc468f6e5647311eb + nokogiri (1.19.4-arm64-darwin) sha256=a46db9853286e6597b36ebc6953817d15acf3a299583eb3f89fdc6f91dd63527 + nokogiri (1.19.4-x86_64-darwin) sha256=7fd17057d3e1f00e9954a74b3cd76595d3d4a5ef233b7ed9599047c204f70551 + nokogiri (1.19.4-x86_64-linux-gnu) sha256=379fae440b28915e3f19d752ce2dcf8465ed2b2fbefd2a7ca0dd497bc981a06a + nokogiri (1.19.4-x86_64-linux-musl) sha256=17dfb7c1fa194ae02fbf7c51a7afc8d278045ab3fdacfd86f91d02d7b274470b + pathutil (0.16.2) sha256=e43b74365631cab4f6d5e4228f812927efc9cb2c71e62976edcb252ee948d589 + pdf-reader (2.15.1) sha256=18c6a986a84a3117fa49f4279fc2de51f5d2399b71833df5d2bccd595c7068ce + public_suffix (7.0.5) sha256=1a8bb08f1bbea19228d3bed6e5ed908d1cb4f7c2726d18bd9cadf60bc676f623 + pwindows-theme (1.0.0) + racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f + rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a + rake (13.4.2) sha256=cb825b2bd5f1f8e91ca37bddb4b9aaf345551b4731da62949be002fa89283701 + rb-fsevent (0.11.2) sha256=43900b972e7301d6570f64b850a5aa67833ee7d87b458ee92805d56b7318aefe + rb-inotify (0.11.1) sha256=a0a700441239b0ff18eb65e3866236cd78613d6b9f78fea1f9ac47a85e47be6e + rexml (3.4.4) sha256=19e0a2c3425dfbf2d4fc1189747bdb2f849b6c5e74180401b15734bc97b5d142 + rouge (4.7.0) sha256=dba5896715c0325c362e895460a6d350803dbf6427454f49a47500f3193ea739 + ruby-rc4 (0.1.5) sha256=00cc40a39d20b53f5459e7ea006a92cf584e9bc275e2a6f7aa1515510e896c03 + safe_yaml (1.0.5) sha256=a6ac2d64b7eb027bdeeca1851fe7e7af0d668e133e8a88066a0c6f7087d9f848 + sass-embedded (1.101.6-aarch64-linux-gnu) sha256=6835585750627925a35070485d7fa055dcc39fe1713a596af15589d62ce4f9d3 + sass-embedded (1.101.6-aarch64-linux-musl) sha256=d4b91da97d247d9298dfc78efbe9bc9859078efe12c9e4a9be96a178dcc48fb3 + sass-embedded (1.101.6-arm-linux-gnueabihf) sha256=f3a6323bcf6761bab1e94379fe4df3582f53664fc9ecb506878f0369a7e8b5b5 + sass-embedded (1.101.6-arm-linux-musleabihf) sha256=5f59087981a7a23f6165cf55e6d95043e8cd6384e70781701a5d3fa89786cbc4 + sass-embedded (1.101.6-arm64-darwin) sha256=ea15579c067d794893b8259799434423f282646b64ceb434980bf4443be81888 + sass-embedded (1.101.6-x86_64-darwin) sha256=7307b9fb7e164759ef95ad7ce4a28c6ffe5be5a70aa9b11de3b15d9e5c62b3d5 + sass-embedded (1.101.6-x86_64-linux-gnu) sha256=f742f71ce987d201c7832618b0c00aa95c7e1baafe69897ea320fef056a661e2 + sass-embedded (1.101.6-x86_64-linux-musl) sha256=c11a4a205cfa1b50d699eec412bf680b4e7c96cb9a3f3aad91461aef6d3bb267 + terminal-table (3.0.2) sha256=f951b6af5f3e00203fb290a669e0a85c5dd5b051b3b023392ccfd67ba5abae91 + ttfunk (1.8.0) sha256=a7cbc7e489cc46e979dde04d34b5b9e4f5c8f1ee5fc6b1a7be39b829919d20ca + typhoeus (1.6.0) sha256=bacc41c23e379547e29801dc235cd1699b70b955a1ba3d32b2b877aa844c331d + unicode-display_width (2.6.0) sha256=12279874bba6d5e4d2728cef814b19197dbb10d7a7837a869bab65da943b7f5a + webrick (1.9.2) sha256=beb4a15fc474defed24a3bda4ffd88a490d517c9e4e6118c3edce59e45864131 + yell (2.2.2) sha256=1d166f3cc3b6dc49a59778ea7156ed6d8de794c15106d48ffd6cbb061b9b26bc + zeitwerk (2.8.2) sha256=7212a61311083c604184b1ea2574b9aa05cd14f855a0841c06985cabe9181d12 + +BUNDLED WITH + 4.0.11 diff --git a/_config.yml b/_config.yml index 97d54b2..af8a67a 100644 --- a/_config.yml +++ b/_config.yml @@ -1,7 +1,22 @@ title: PWindows Shop -description: Official Store of PWindows +description: Buy PCoins and support the PWindows community. url: "https://shop.pwindows.qzz.io" +theme: pwindows-theme +markdown: kramdown +kramdown: + input: GFM +exclude: + - README.md + - vendor/ + - assets/mojang/fonts/MinecraftFive-Bold.html + - assets/mojang/fonts/MinecraftFive-Regular.html + - assets/mojang/fonts/MinecraftSeven.html + - assets/mojang/fonts/MinecraftTen.html + - assets/mojang/fonts/NotoSans-Bold.html + - assets/mojang/fonts/NotoSans-BoldItalic.html + - assets/mojang/fonts/NotoSans-Italic.html + - assets/mojang/fonts/NotoSans-Regular.html collections: products: output: true - permalink: /products/:name \ No newline at end of file + permalink: /products/:name diff --git a/_data/site.yml b/_data/site.yml new file mode 100644 index 0000000..fe07085 --- /dev/null +++ b/_data/site.yml @@ -0,0 +1,48 @@ +main_url: https://www.pwindows.qzz.io + +navigation: + - label: About + path: /about + icon: /assets/mojang/svg/icons/book.png + - label: Newest News + path: /articles + icon: /assets/mojang/Invicon_Map.png + - label: Staff + path: /staff + icon: /assets/mojang/svg/icons/color-two-players.svg + - label: Departments + path: /departments/ + icon: /assets/mojang/svg/icons/color-chest.svg + - label: Games + path: /games + icon: /assets/icons/controller.png + +footer: + games: + - label: Sacred Cubes + path: /games/sacred-cubes + - label: Obby of Dominance + path: /games/obby-of-dominance + departments: + - label: Minecraft + path: /departments/minecraft + - label: Roblox + path: /departments/roblox + - label: Unity + path: /departments/unity + support: + - label: Feedback + path: /feedback + - label: Site map + path: /sitemap + - label: Contact us + path: /contact + - label: Staff + path: /staff + +links: + support: https://support.pwindows.qzz.io + discord: https://discord.pwindows.qzz.io/ + youtube: https://www.youtube.com/@PWindows + twitter: https://x.com/pwindowsz + site_logo: /assets/PWindows.png diff --git a/_includes/header.html b/_includes/header.html deleted file mode 100644 index ca9a6a7..0000000 --- a/_includes/header.html +++ /dev/null @@ -1,73 +0,0 @@ - -
- - - - - - - - -
-
-
-

Shopping Cart

- -
-
- -
- - - diff --git a/_includes/schema-org.html b/_includes/schema-org.html index 641ee8f..2d852e1 100644 --- a/_includes/schema-org.html +++ b/_includes/schema-org.html @@ -1,9 +1,15 @@ \ No newline at end of file + } + diff --git a/_layouts/default.html b/_layouts/default.html deleted file mode 100644 index 1c51875..0000000 --- a/_layouts/default.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - {% if page.url == "/" %} - {% include schema-org.html %} - {% endif %} - - - {{ page.title }} | {{ site.title }} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{ content_for_head }} - - - {% if page.extra_css %} - {% for css_file in page.extra_css %} - - {% endfor %} - {% endif %} - - - {% if page.layout != "news" %} -

{{ page.title }} | {{ site.title }}

- {% endif %} - {% include header.html %} -
- {{ content }} -
- - - diff --git a/_layouts/product.html b/_layouts/product.html index aa97492..3c91be9 100644 --- a/_layouts/product.html +++ b/_layouts/product.html @@ -2,164 +2,48 @@ layout: default --- -
- ← Back to Shop - -
+
+ Back to Shop + +
- {{ page.title }} + {{ page.title | escape }}
-

{{ page.category | upcase }}

-

{{ page.title }}

-

{{ page.coins | number_with_delimiter }} PCoins

+

{{ page.title }}

+ {% if page.coins %}

{{ page.coins | number_with_delimiter }} PCoins

{% endif %}

{{ page.description }}

- - {% if page.content != "" %} -
{{ page.content }}
- {% endif %} + {% assign product_content = content | strip %} + {% if product_content != '' %}
{{ content }}
{% endif %}
-
+
USD ${{ page.price_usd }}
+ - +
-

+

- +

Added items will appear in your shopping cart.

-
- - +
diff --git a/assets/css/news.css b/assets/css/news.css deleted file mode 100644 index 3b43e5a..0000000 --- a/assets/css/news.css +++ /dev/null @@ -1,103 +0,0 @@ -/* Default (light mode / brand base) */ -body { - background: #ffffff; /* brand white background */ - color: #000000; -} - -.news-banner img { - height: 670px; /* set a fixed height */ - object-fit: cover; /* crop instead of squish */ - width: 100%; /* keep full width */ - margin-bottom: 1rem; -} - -.news-item h1 h2 h3 { - font-family: 'Minecraft Ten v2'; - margin-bottom: 10px; -} - -.minecraft-box { - position: absolute; /* overlay on banner */ - top: 650px; /* distance from bottom */ - left: 50%; /* center horizontally */ - transform: translateX(-50%); /* true centering */ - - background-color: #171615; - padding: 12px 20px; - font-size: 1.2rem; - color: #ffffff; - text-align: center; -} - -.news-body { - display: flex; - align-items: flex-start; - gap: 90px; - max-width: 1000px; - margin: 0 auto; - padding: 20px; -} - -.author-info { - flex: 0 0 200px; /* fixed width column */ - text-align: center; -} - -.author-pfp { - display: block; /* default for images */ - margin: 0 auto; - max-width: 120px; /* sets a max width */ - height: auto; /* keeps natural aspect ratio */ - object-fit: contain; /* ensures the whole image shows */ - margin-bottom: 10px; - display: block; -} - -.author-name { - font-weight: bold; - margin-bottom: 6px; -} - -.author-date { - font-size: 0.9rem; - color: #555; -} - -.summary { - margin-top: 10px; - margin-bottom: 30px; -} - -.content { - line-height: 1.3; -} - -@media (prefers-color-scheme: dark) { - body { - background: #171615; - color: #e0e0e0; - } - - .minecraft-box { - background-color: #ffffff; - color: #1D1E1E; - } -} - -@media (max-width: 768px) { - .news-body { - flex-direction: column; /* stack vertically */ - gap: 30px; /* smaller gap for mobile */ - } - - .author-info { - order: -1; /* move author block to the top */ - flex: none; /* remove fixed width */ - width: 100%; /* full width on mobile */ - margin-bottom: 20px; - } - - .article { - width: 100%; /* ensure article fills the width */ - } -} diff --git a/assets/css/shop.css b/assets/css/shop.css index bd0d72b..b522729 100644 --- a/assets/css/shop.css +++ b/assets/css/shop.css @@ -1,1033 +1,735 @@ -/* ===================== - GATE PAGE - ===================== */ +/* Shared shop surfaces */ +.gate-wrap, +.shop-wrap, +.product-page-wrap { + width: min(var(--content-width), calc(100% - 40px)); + margin: 0 auto; +} + +.gate-card, +.product-card, +.product-page { + border: 2px solid var(--card-border); + background: var(--card-background); + box-shadow: var(--card-shadow); +} +/* Username gate */ .gate-wrap { - min-height: 100vh; - display: flex; - align-items: center; - justify-content: center; - padding: 100px 20px 40px; + display: grid; + min-height: calc(100vh - var(--topbar-height)); + place-items: center; + padding: 72px 0 92px; } .gate-card { - background: rgba(255,255,255,0.97); - border-radius: 24px; - border: 1px solid rgba(255,206,2,0.25); - padding: 48px 40px 40px; - max-width: 480px; - width: 100%; - display: flex; - flex-direction: column; - align-items: center; - gap: 0; - box-shadow: 0 20px 60px rgba(0,0,0,0.08), 0 0 30px rgba(255,206,2,0.08); + width: min(100%, 650px); + padding: 52px; + text-align: center; } .gate-logo { - margin-bottom: 20px; + width: min(360px, 80%); + margin: 0 auto 1.4rem; } -.gate-logo img { - height: 40px; - object-fit: contain; +.gate-title, +.gate-welcome { + margin-bottom: 0.8rem; + font-size: clamp(2.1rem, 6vw, 3.6rem); } -.gate-title { - font-family: 'Minecraft Ten v2', monospace; - font-size: clamp(1.4rem, 5vw, 2rem); - font-weight: 400; - color: #333; - text-align: center; - line-height: 1.3; - margin-bottom: 10px; +.gate-title span { + display: block; + color: var(--green-5); + text-shadow: 3px 3px 0 rgba(42, 100, 28, 0.18); } -.gate-yellow { - color: #ffce02; - text-shadow: 0 0 20px rgba(255,206,2,0.4); +.gate-sub { + margin: 0 auto 1.8rem; + color: var(--coldgrey-4); + font-size: 1.05rem; } -.gate-sub { - font-family: 'Minecraft Seven v2', monospace; +.gate-form label { + display: block; + margin-bottom: 0.55rem; + font-family: var(--font-pixel); font-size: 0.85rem; - color: #888; - text-align: center; - margin-bottom: 28px; + font-weight: 700; + text-align: left; } .gate-input-row { - display: flex; - gap: 10px; - width: 100%; - margin-bottom: 8px; + display: grid; + grid-template-columns: minmax(0, 1fr) auto; + gap: 12px; } -.gate-input { - flex: 1; - padding: 12px 16px; - border: 1px solid rgba(255,206,2,0.3); - border-radius: 12px; - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.9rem; - color: #333; +.gate-input, +.shop-search, +.promo-input, +.cart-promo-input, +.donate-input-wrap input { + min-width: 0; + min-height: 48px; + padding: 0.75rem 0.95rem; + border: 2px solid var(--coldgrey-2); + border-radius: 0; + color: var(--coldgrey-6); background: #fff; - outline: none; - transition: border-color 0.2s; + box-shadow: inset 0 3px 0 rgba(44, 47, 58, 0.08); + font-family: var(--font-pixel); } -.gate-input:focus { - border-color: #ffce02; - box-shadow: 0 0 0 3px rgba(255,206,2,0.15); +.gate-input:focus, +.shop-search:focus, +.promo-input:focus, +.cart-promo-input:focus, +.donate-input-wrap input:focus { + border-color: var(--green-5); + outline: 3px solid rgba(82, 165, 53, 0.22); + outline-offset: 1px; } -.gate-btn { - padding: 12px 20px; - background: #ffce02; - color: #333; - border: none; - border-radius: 12px; - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.85rem; - font-weight: 700; - cursor: pointer; - transition: all 0.2s ease; - white-space: nowrap; - text-decoration: none; - display: inline-block; - text-align: center; -} - -.gate-btn:hover { - background: #f0c000; - transform: translateY(-2px); - box-shadow: 0 6px 20px rgba(255,206,2,0.35); -} - -.gate-btn--full { - width: 100%; - padding: 14px; - font-size: 0.9rem; +.gate-error, +.gate-hint { + min-height: 1.5rem; + margin: 0.45rem 0 0; + font-family: var(--font-pixel); + font-size: 0.84rem; } .gate-error { - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.8rem; - color: #e74c3c; - text-align: center; - min-height: 18px; - width: 100%; + color: #b3261e; } .gate-hint { - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.78rem; - color: #aaa; - text-align: center; - margin-top: -4px; - margin-bottom: 4px; + color: var(--coldgrey-3); } .gate-divider { display: flex; align-items: center; - width: 100%; - margin: 20px 0; - gap: 12px; - color: #ccc; - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.8rem; + gap: 0.85rem; + margin: 1.6rem 0 1rem; + color: var(--coldgrey-2); + font-family: var(--font-pixel); + font-size: 0.76rem; + text-transform: uppercase; } .gate-divider::before, .gate-divider::after { - content: ''; + height: 2px; flex: 1; - height: 1px; - background: rgba(0,0,0,0.08); -} - -.gate-alt-row { - display: flex; - gap: 10px; - width: 100%; + background: rgba(61, 66, 80, 0.16); + content: ""; } -.gate-alt-btn { - flex: 1; - display: flex; - align-items: center; - justify-content: center; - gap: 8px; - padding: 12px 16px; - border-radius: 12px; - border: 1px solid rgba(0,0,0,0.1); - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.82rem; - color: #555; - text-decoration: none; - background: #fafafa; - transition: all 0.2s ease; - cursor: pointer; +.gate-alt-row, +.gate-success-btns { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 12px; } -.gate-alt-btn:hover { - border-color: rgba(255,206,2,0.4); - background: #fffbe6; - transform: translateY(-1px); +.gate-success { + justify-items: center; } -.gate-alt-btn--yellow { - border-color: rgba(255,206,2,0.4); - background: rgba(255,206,2,0.06); - color: #b8860b; +.gate-success-btns { + width: 100%; } -.gate-success { - gap: 12px; +.gate-btn--full { + grid-column: 1 / -1; } .gate-avatar { - width: 80px; - height: 80px; - border-radius: 12px; - background-color: #f0f0f0; - background-size: cover; - background-position: center; - border: 2px solid rgba(255,206,2,0.3); -} - -.gate-welcome { - font-family: 'Minecraft Ten v2', monospace; - font-size: 1.5rem; - font-weight: 400; - color: #333; - text-align: center; + width: 96px; + height: 96px; + margin: 0 auto 1.4rem; + border: 4px solid #fff; + background: var(--coldgrey-2) center / cover; + box-shadow: 0 0 0 4px var(--green-5), 7px 7px 0 rgba(42, 100, 28, 0.25); + image-rendering: pixelated; } -.gate-success-btns { - display: flex; - flex-direction: column; - gap: 10px; - width: 100%; - align-items: center; +/* Catalog */ +.shop-hero { + color: #fff; + background: var(--coldgrey-6) url("../mojang/img/bg-wool-dark.png"); } -/* ===================== - SHOP HERO - ===================== */ - -.shop-hero { - padding-top: 100px; - padding-bottom: 32px; - text-align: center; - background-image: url('/assets/mojang/img/bg-grass.png'); - background-size: cover; - background-position: center; +.shop-hero-inner { position: relative; - margin: 15px; - margin-top: 95px; - border-radius: 20px; - overflow: hidden; + width: min(var(--content-width), calc(100% - 40px)); + margin: 0 auto; + padding: 68px 0 58px; + text-align: center; } -.shop-hero::before { - content: ''; - position: absolute; - inset: 0; - background: rgba(255,255,255,0.7); - backdrop-filter: blur(4px); +.shop-title { + margin: 0; + color: #fff; + font-size: clamp(2.6rem, 7vw, 5rem); + text-shadow: 4px 4px 0 rgba(0, 0, 0, 0.32); } -.shop-hero-inner { - position: relative; - z-index: 1; - padding: 0 20px; +.shop-sub { + margin: 0.8rem 0 2rem; + color: #d7dae2; + font-size: 1.08rem; } .shop-user-pill { - display: inline-flex; + position: absolute; + top: 24px; + right: 0; + display: flex; align-items: center; - gap: 10px; - background: rgba(255,255,255,0.95); - border: 1px solid rgba(255,206,2,0.3); - border-radius: 99px; - padding: 6px 14px 6px 6px; - margin-bottom: 16px; - font-family: 'Minecraft Seven v2', monospace; + gap: 0.65rem; + padding: 0.45rem 0.65rem; + border: 2px solid rgba(255, 255, 255, 0.16); + background: rgba(255, 255, 255, 0.09); + font-family: var(--font-pixel); font-size: 0.82rem; - color: #333; } .shop-user-avatar { - width: 28px; - height: 28px; - border-radius: 6px; - background-size: cover; - background-color: #eee; + width: 34px; + height: 34px; + background: var(--coldgrey-4) center / cover; + image-rendering: pixelated; } .shop-user-switch { - background: none; - border: none; - color: #aaa; - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.75rem; - cursor: pointer; padding: 0; - margin-left: 4px; -} - -.shop-user-switch:hover { color: #e74c3c; } - -.shop-title { - font-family: 'Minecraft Ten v2', monospace; - font-size: clamp(1.8rem, 5vw, 2.8rem); - font-weight: 400; - color: #333; - margin-bottom: 8px; -} - -.shop-sub { - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.88rem; - color: #666; - margin-bottom: 24px; + border: 0; + color: var(--primary); + background: transparent; + cursor: pointer; + font-family: var(--font-pixel); + font-size: 0.72rem; + text-decoration: underline; } .shop-controls { display: flex; - flex-direction: column; - align-items: center; - gap: 12px; - max-width: 480px; + max-width: 760px; + align-items: stretch; + justify-content: center; + gap: 14px; margin: 0 auto; } .shop-search { - width: 100%; - padding: 12px 18px; - border: 1px solid rgba(255,206,2,0.35); - border-radius: 12px; - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.9rem; - color: #333; - background: rgba(255,255,255,0.95); - outline: none; - transition: border-color 0.2s; -} - -.shop-search:focus { - border-color: #ffce02; - box-shadow: 0 0 0 3px rgba(255,206,2,0.15); + width: min(100%, 370px); + border-color: transparent; } .shop-cats { display: flex; - gap: 8px; - flex-wrap: wrap; - justify-content: center; + gap: 7px; } .cat-btn { - padding: 8px 18px; - border-radius: 99px; - border: 1px solid rgba(0,0,0,0.12); - background: rgba(255,255,255,0.9); - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.8rem; - color: #666; - cursor: pointer; - transition: all 0.2s ease; -} - -.cat-btn:hover { - border-color: rgba(255,206,2,0.4); - background: #fffbe6; + --btn-bg: var(--mc-vanilla-coldgrey-5); + --btn-bottom: var(--mc-vanilla-coldgrey-6); + --btn-top: var(--mc-vanilla-coldgrey-4); + --btn-active-border: white; + min-height: 48px; + padding: 12px 16px; } .cat-btn.active { - background: #ffce02; - border-color: #ffce02; - color: #333; - font-weight: 700; + --btn-bg: var(--secondary); + --btn-bottom: var(--secondary-darker); + --btn-top: var(--primary); + --btn-idle-shade: rgba(0, 0, 0, 0.05); + --btn-hover-shade: rgba(0, 0, 0, 0.1); } -/* ===================== - PRODUCT GRID - ===================== */ - .shop-wrap { - padding: 32px 20px 60px; - max-width: 1200px; - margin: 0 auto; + padding: 72px 0 96px; } .product-grid { display: grid; - grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); - gap: 20px; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 30px; } .grid-item { position: relative; + display: flex; + min-width: 0; + flex-direction: column; } .product-card-link { - text-decoration: none; + display: flex; + flex: 1; color: inherit; - display: block; - height: 100%; + text-decoration: none; } .product-card { - background: rgba(255,255,255,0.97); - border: 1px solid rgba(255,206,2,0.2); - border-radius: 16px; - overflow: hidden; - text-decoration: none; - color: inherit; + position: relative; display: flex; + width: 100%; + min-width: 0; flex-direction: column; - transition: all 0.25s ease; - position: relative; - height: 100%; + overflow: hidden; + transition: transform 0.18s ease, box-shadow 0.18s ease; } -.product-card:hover { - transform: translateY(-4px); - box-shadow: 0 16px 40px rgba(0,0,0,0.1), 0 0 20px rgba(255,206,2,0.2); - border-color: rgba(255,206,2,0.4); +.product-card-link:hover .product-card, +.product-card-link:focus-visible .product-card { + border-color: rgba(61, 66, 80, 0.4); } .product-card--featured { - border: 2px solid #ffce02; - box-shadow: 0 0 20px rgba(255,206,2,0.2); + border-color: var(--primary); + box-shadow: 0 8px 0 var(--secondary-darker), 0 18px 40px rgba(0, 0, 0, 0.14); } .product-badge { position: absolute; - top: 12px; - right: 12px; - background: #ffce02; - color: #333; - font-family: 'Minecraft Seven v2', monospace; + z-index: 2; + top: 14px; + right: 0; + padding: 0.5rem 0.8rem; + color: var(--coldgrey-6); + background: var(--primary); + box-shadow: inset 0 -4px 0 var(--secondary-darker); + font-family: var(--font-pixel); font-size: 0.7rem; font-weight: 700; - padding: 4px 10px; - border-radius: 99px; + text-transform: uppercase; } .product-img-wrap { - background: #fffbe6; - display: flex; - align-items: center; - justify-content: center; - padding: 24px; - min-height: 140px; + display: grid; + min-height: 220px; + place-items: center; + padding: 28px; + background: #eef0ea url("../mojang/img/bg-wool-white-dark.png"); } .product-img-wrap img { - width: 80px; - height: 80px; + width: 100%; + height: 180px; object-fit: contain; + filter: drop-shadow(8px 10px 0 rgba(44, 47, 58, 0.12)); image-rendering: pixelated; } .product-body { - padding: 16px 16px 8px; flex: 1; + padding: 24px 24px 16px; } .product-coins { - font-family: 'Minecraft Ten v2', monospace; - font-size: 0.85rem; - color: #ffce02; - text-shadow: 0 0 10px rgba(255,206,2,0.4); - margin-bottom: 4px; + margin: 0 0 0.45rem; + color: var(--green-5); + font-family: var(--font-pixel); + font-size: 0.78rem; + font-weight: 700; + letter-spacing: 0.06em; + text-transform: uppercase; } .product-name { - font-family: 'Minecraft Ten v2', monospace; - font-size: 1.1rem; - font-weight: 400; - color: #333; - margin-bottom: 6px; + margin: 0 0 0.65rem; + font-size: 1.55rem; } .product-desc { - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.75rem; - color: #888; - line-height: 1.5; + margin: 0; + color: var(--coldgrey-4); + font-size: 0.93rem; } .product-footer { display: flex; + min-height: 64px; align-items: center; - justify-content: flex-start; - padding: 12px 16px; - border-top: 1px solid rgba(255,206,2,0.1); - margin-top: auto; - gap: 12px; - padding-right: 80px; -} - -.product-prices { - display: flex; - flex-direction: column; - gap: 1px; + justify-content: space-between; + padding: 16px 24px 20px; + border-top: 2px solid rgba(61, 66, 80, 0.11); } .product-price { - font-family: 'Minecraft Ten v2', monospace; - font-size: 1rem; - color: #333; + font-family: var(--font-display); + font-size: 1.35rem; } -.product-price--primary { - font-family: 'Minecraft Ten v2', monospace; - font-size: 1rem; - color: #333; +.product-btn { + width: calc(100% - 30px); + margin: -4px auto 0; } -.product-price--secondary { - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.75rem; - color: #aaa; +.donate-card { + flex: 1; } -/* Donate card */ .donate-heart { - background: #fffbe6; + color: var(--primary); + font-family: var(--font-display); + font-size: 6rem; + line-height: 1; + text-shadow: 6px 6px 0 var(--secondary-darker); } .donate-footer { - gap: 10px; + display: block; } .donate-input-wrap { display: flex; align-items: center; - gap: 4px; - background: #f9f9f9; - border: 1px solid rgba(255,206,2,0.3); - border-radius: 8px; - padding: 6px 10px; - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.85rem; - color: #888; + gap: 0.55rem; + font-family: var(--font-display); + font-size: 1.3rem; } .donate-input-wrap input { - width: 60px; - border: none; - background: none; - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.85rem; - color: #333; - outline: none; + width: 100%; } -.donate-cta { - background: #ffce02; - color: #333; - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.8rem; - font-weight: 700; - padding: 8px 14px; - border-radius: 8px; - border: none; - cursor: pointer; +.empty-state { + padding: 3rem; + color: var(--coldgrey-3); + font-family: var(--font-pixel); + text-align: center; } -/* ===================== - INDIVIDUAL PRODUCT PAGE - ===================== */ - +/* Product details */ .product-page-wrap { - max-width: 960px; - margin: 0 auto; - padding: 120px 24px 60px; + padding: 58px 0 92px; } .back-link { - font-family: 'Minecraft Seven v2', monospace; + display: inline-flex; + align-items: center; + gap: 0.5rem; + margin-bottom: 1.4rem; + color: var(--green-6); + font-family: var(--font-pixel); font-size: 0.85rem; - color: #888; + font-weight: 700; text-decoration: none; - display: inline-block; - margin-bottom: 28px; - transition: color 0.2s; } -.back-link:hover { color: #ffce02; } +.back-link::before { + content: "←"; +} + +.back-link:hover { + text-decoration: underline; +} .product-page { display: grid; - grid-template-columns: 1fr 1fr; - gap: 48px; - align-items: start; + overflow: hidden; + grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } -.product-page-img-wrap { - background: #fffbe6; - border-radius: 20px; - border: 1px solid rgba(255,206,2,0.25); - display: flex; - align-items: center; - justify-content: center; - padding: 48px; - min-height: 300px; +.product-page-left { + display: grid; + min-width: 0; + place-items: center; + padding: 52px; + background: #eef0ea url("../mojang/img/bg-wool-dark.png"); } .product-page-img-wrap img { - width: 160px; - height: 160px; + width: min(100%, 440px); + max-height: 440px; object-fit: contain; + filter: drop-shadow(12px 14px 0 rgba(44, 47, 58, 0.14)); image-rendering: pixelated; } -.product-page-cat { - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.75rem; - color: #ffce02; - letter-spacing: 0.1em; - margin-bottom: 8px; +.product-page-right { + min-width: 0; + padding: 58px 50px; } .product-page-title { - font-family: 'Minecraft Ten v2', monospace; - font-size: clamp(1.8rem, 4vw, 2.4rem); - font-weight: 400; - color: #333; - margin-bottom: 6px; + margin-bottom: 0.55rem; + font-size: clamp(2.2rem, 5vw, 3.8rem); } .product-page-coins { - font-family: 'Minecraft Ten v2', monospace; - font-size: 1.1rem; - color: #ffce02; - text-shadow: 0 0 15px rgba(255,206,2,0.4); - margin-bottom: 16px; + margin: 0 0 1.3rem; + color: var(--green-5); + font-family: var(--font-pixel); + font-weight: 700; } -.product-page-desc { - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.88rem; - color: #666; - line-height: 1.7; - margin-bottom: 24px; +.product-page-desc, +.product-page-content { + color: var(--coldgrey-4); } .product-page-prices { - display: flex; - gap: 12px; - margin-bottom: 24px; - flex-wrap: wrap; + margin: 1.7rem 0; } .price-option { display: flex; - flex-direction: column; - background: #fafafa; - border: 1px solid rgba(0,0,0,0.08); - border-radius: 10px; - padding: 10px 16px; - min-width: 90px; -} - -.price-option--primary { - border-color: rgba(255,206,2,0.4); - background: rgba(255,206,2,0.06); + align-items: center; + justify-content: space-between; + padding: 1rem 1.2rem; + border: 2px solid var(--green-5); + background: rgba(160, 224, 129, 0.16); } .price-label { - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.7rem; - color: #aaa; - margin-bottom: 2px; + color: var(--green-6); + font-family: var(--font-pixel); + font-size: 0.8rem; + font-weight: 700; } .price-value { - font-family: 'Minecraft Ten v2', monospace; - font-size: 1rem; - color: #333; + font-family: var(--font-display); + font-size: 1.65rem; } .promo-row { - display: flex; - gap: 8px; - margin-bottom: 6px; -} - -.promo-input { - flex: 1; - padding: 10px 14px; - border: 1px solid rgba(0,0,0,0.12); - border-radius: 10px; - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.85rem; - color: #333; - outline: none; - transition: border-color 0.2s; -} - -.promo-input:focus { - border-color: #ffce02; - box-shadow: 0 0 0 3px rgba(255,206,2,0.12); + display: grid; + grid-template-columns: minmax(0, 1fr) auto; + gap: 10px; } .promo-btn { - padding: 10px 16px; - background: #f5f5f5; - border: 1px solid rgba(0,0,0,0.1); - border-radius: 10px; - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.82rem; - color: #555; - cursor: pointer; - transition: all 0.2s; -} - -.promo-btn:hover { - background: #ffce02; - border-color: #ffce02; - color: #333; + min-width: 92px; } .promo-msg { - font-family: 'Minecraft Seven v2', monospace; + min-height: 1.4rem; + margin: 0.5rem 0; + font-family: var(--font-pixel); font-size: 0.78rem; - min-height: 18px; - margin-bottom: 16px; } .buy-btn { width: 100%; - padding: 16px; - background: #ffce02; - color: #333; - border: none; - border-radius: 14px; - font-family: 'Minecraft Ten v2', monospace; - font-size: 1rem; - font-weight: 400; - cursor: pointer; - transition: all 0.2s ease; - margin-bottom: 10px; -} - -.buy-btn:hover { - background: #f0c000; - transform: translateY(-2px); - box-shadow: 0 8px 24px rgba(255,206,2,0.4); -} - -.buy-btn:disabled { - opacity: 0.6; - cursor: not-allowed; - transform: none; + margin-top: 0.45rem; } .buy-note { - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.75rem; - color: #bbb; + margin: 0.75rem 0 0; + color: var(--coldgrey-2); + font-size: 0.78rem; text-align: center; } -/* ===================== - SHOPPING CART - ===================== */ - +/* Cart */ .cart-btn { - position: fixed; - top: 20px; - right: 40px; - z-index: 1004; - width: 48px; - height: 48px; - border-radius: 50%; - background: #ffce02; - border: 2px solid #333; - color: #333; - cursor: pointer; - display: flex; + position: relative; + display: inline-flex; + width: auto; + height: auto; align-items: center; - justify-content: center; - transition: all 0.3s ease; - box-shadow: 0 4px 15px rgba(255, 206, 2, 0.3); + gap: 0.55rem; } -.cart-btn:hover { - transform: scale(1.1); - box-shadow: 0 8px 25px rgba(255, 206, 2, 0.5); +.cart-btn svg { + display: inline-block; + flex: 0 0 auto; } .cart-count { position: absolute; - top: -8px; - right: -8px; - background: #e74c3c; - color: white; - font-family: 'Minecraft Seven v2', monospace; + top: 1px; + right: 0; + display: grid; + min-width: 21px; + height: 21px; + place-items: center; + padding: 0 5px; + color: var(--coldgrey-6); + background: var(--primary); + box-shadow: 2px 2px 0 var(--secondary-darker); + font-family: var(--font-pixel); font-size: 0.65rem; font-weight: 700; - width: 20px; - height: 20px; - border-radius: 50%; - display: flex; - align-items: center; - justify-content: center; - border: 2px solid white; } .cart-overlay { position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: rgba(0, 0, 0, 0); - z-index: 1005; + z-index: 1100; + inset: 0; + visibility: hidden; + background: rgba(13, 16, 20, 0.66); opacity: 0; - pointer-events: none; - transition: all 0.3s ease; + transition: opacity 0.22s ease, visibility 0.22s ease; } .cart-overlay.open { - background: rgba(0, 0, 0, 0.5); + visibility: visible; opacity: 1; - pointer-events: all; } .cart-sidebar { position: fixed; + z-index: 1101; top: 0; - right: -400px; - width: 400px; - height: 100vh; - background: rgba(255, 255, 255, 0.98); - backdrop-filter: blur(20px); - z-index: 1006; - transition: right 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94); + right: 0; display: flex; + width: min(450px, 100%); + height: 100dvh; flex-direction: column; - box-shadow: -4px 0 30px rgba(0, 0, 0, 0.1); + background: #fff url("../mojang/img/bg-wool-white.png"); + box-shadow: -8px 0 0 rgba(44, 47, 58, 0.2); + transform: translateX(105%); + transition: transform 0.28s ease; } .cart-sidebar.open { - right: 0; + transform: translateX(0); } .cart-header { display: flex; align-items: center; justify-content: space-between; - padding: 20px; - border-bottom: 1px solid rgba(255, 206, 2, 0.2); - background: rgba(255, 206, 2, 0.04); + padding: 24px; + border-bottom: 3px solid var(--coldgrey-6); + color: #fff; + background: var(--coldgrey-6); } .cart-header h2 { - font-family: 'Minecraft Ten v2', monospace; - font-size: 1.3rem; - color: #333; margin: 0; + font-size: 1.65rem; } .cart-close { - width: 32px; - height: 32px; - border: none; - background: none; - font-size: 1.5rem; - color: #999; - cursor: pointer; - display: flex; - align-items: center; - justify-content: center; - transition: all 0.2s; -} - -.cart-close:hover { - color: #333; - transform: rotate(90deg); + display: grid; + width: 40px; + height: 40px; + place-items: center; + padding: 0; + font-size: 1.6rem; + line-height: 1; } .cart-items { flex: 1; + padding: 18px; overflow-y: auto; - padding: 16px; +} + +.cart-empty { + padding: 2rem; + color: var(--coldgrey-3); + text-align: center; } .cart-item { - display: flex; + display: grid; + align-items: center; + padding: 14px 0; + border-bottom: 2px solid rgba(61, 66, 80, 0.13); + grid-template-columns: 64px minmax(0, 1fr); gap: 12px; - padding: 12px; - background: #fafafa; - border-radius: 10px; - margin-bottom: 12px; - border: 1px solid rgba(255, 206, 2, 0.1); } .cart-item-img { - width: 60px; - height: 60px; - border-radius: 8px; + width: 64px; + height: 64px; + padding: 5px; + background: #eceee8; object-fit: contain; - background: #fffbe6; - padding: 4px; - flex-shrink: 0; + image-rendering: pixelated; } .cart-item-info { - flex: 1; - display: flex; - flex-direction: column; - justify-content: center; + min-width: 0; } -.cart-item-info h4 { - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.9rem; - color: #333; - margin: 0 0 3px 0; +.cart-item-info h3 { + margin: 0; + overflow-wrap: anywhere; + font-family: var(--font-pixel); + font-size: 0.88rem; } -.cart-item-coins { - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.75rem; - color: #ffce02; - margin: 0 0 3px 0; +.cart-item-coins, +.cart-item-price { + margin: 0.2rem 0 0; + color: var(--coldgrey-3); + font-size: 0.76rem; } .cart-item-price { - font-family: 'Minecraft Ten v2', monospace; - font-size: 0.9rem; - color: #333; - margin: 0; + color: var(--green-6); + font-family: var(--font-pixel); + font-weight: 700; } .cart-item-controls { display: flex; align-items: center; - gap: 8px; - flex-wrap: wrap; -} - -.qty-btn { - width: 24px; - height: 24px; - border: 1px solid rgba(255, 206, 2, 0.4); - background: #fff; - color: #333; - border-radius: 4px; - cursor: pointer; - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.8rem; - display: flex; - align-items: center; - justify-content: center; - transition: all 0.2s; + gap: 7px; + grid-column: 2; } -.qty-btn:hover { - background: #ffce02; - border-color: #ffce02; +.qty-btn, +.cart-item-remove { + display: grid; + width: 34px; + height: 34px; + place-items: center; + padding: 0; + font-size: 0.75rem; } .qty-display { - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.8rem; - color: #333; - min-width: 20px; + min-width: 28px; + font-family: var(--font-pixel); text-align: center; } .cart-item-remove { - width: 24px; - height: 24px; - border: none; - background: #ffcccc; - color: #e74c3c; - border-radius: 4px; - cursor: pointer; - font-size: 0.8rem; - display: flex; - align-items: center; - justify-content: center; - transition: all 0.2s; -} - -.cart-item-remove:hover { - background: #e74c3c; - color: #fff; + width: auto; + margin-left: auto; + padding: 0 0.65rem; + font-size: 0.7rem; } .cart-footer { - padding: 16px; - border-top: 1px solid rgba(255, 206, 2, 0.2); - background: rgba(255, 206, 2, 0.04); + padding: 20px; + border-top: 3px solid var(--coldgrey-5); + background: #f6f6f2; } .cart-promo { - display: flex; + display: grid; + grid-template-columns: minmax(0, 1fr) auto; gap: 8px; - margin-bottom: 10px; -} - -.cart-promo-input { - flex: 1; - padding: 10px 12px; - border: 1px solid rgba(255, 206, 2, 0.3); - border-radius: 8px; - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.8rem; - color: #333; - outline: none; - transition: border-color 0.2s; -} - -.cart-promo-input:focus { - border-color: #ffce02; - box-shadow: 0 0 0 3px rgba(255, 206, 2, 0.12); } .cart-promo-btn { - padding: 10px 12px; - background: #f5f5f5; - border: 1px solid rgba(0, 0, 0, 0.1); - border-radius: 8px; - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.75rem; - color: #555; - cursor: pointer; - transition: all 0.2s; - white-space: nowrap; -} - -.cart-promo-btn:hover { - background: #ffce02; - border-color: #ffce02; - color: #333; + padding: 0 1rem; } .cart-promo-msg { - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.7rem; - min-height: 16px; - margin-bottom: 12px; - color: #666; + min-height: 1.25rem; + margin: 0.35rem 0; + font-family: var(--font-pixel); + font-size: 0.72rem; } .cart-totals { - background: white; - border: 1px solid rgba(255, 206, 2, 0.2); - border-radius: 10px; - padding: 12px 14px; - margin-bottom: 12px; + padding: 0.9rem 0; + border-top: 2px solid rgba(61, 66, 80, 0.13); } .cart-subtotal, @@ -1035,95 +737,140 @@ .cart-total { display: flex; justify-content: space-between; - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.85rem; - color: #666; - margin-bottom: 6px; + margin: 0.35rem 0; } .cart-total { - border-top: 1px solid rgba(255, 206, 2, 0.2); - padding-top: 8px; - margin-bottom: 0; - font-weight: 700; - color: #333; + margin-top: 0.7rem; + font-family: var(--font-display); + font-size: 1.3rem; } .cart-checkout-btn { width: 100%; - padding: 14px; - background: #ffce02; - color: #333; - border: none; - border-radius: 10px; - font-family: 'Minecraft Ten v2', monospace; - font-size: 0.9rem; - font-weight: 400; - cursor: pointer; - transition: all 0.2s ease; + max-width: none; + min-height: 48px; } -.cart-checkout-btn:hover:not(:disabled) { - background: #f0c000; - transform: translateY(-2px); - box-shadow: 0 8px 24px rgba(255, 206, 2, 0.4); -} +@media (max-width: 980px) { + .product-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } -.cart-checkout-btn:disabled { - opacity: 0.6; - cursor: not-allowed; -} + .product-page { + grid-template-columns: 1fr; + } -/* Product card button style update */ -.product-btn { - background: #ffce02; - color: #333; - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.8rem; - font-weight: 700; - padding: 8px 16px; - border-radius: 8px; - border: none; - cursor: pointer; - transition: all 0.2s; - white-space: nowrap; - position: absolute; - bottom: 16px; - right: 16px; - z-index: 10; + .product-page-left { + min-height: 400px; + } } -.product-btn:hover { - background: #f0c000; - transform: scale(1.05); -} +@media (max-width: 700px) { + .gate-wrap, + .shop-wrap, + .product-page-wrap, + .shop-hero-inner { + width: min(100% - 28px, var(--content-width)); + } -.product-btn:active { - transform: scale(0.95); -} + .gate-wrap { + padding: 42px 0 62px; + place-items: start center; + } -/* ===================== - RESPONSIVE CART - ===================== */ + .gate-card { + padding: 36px 24px; + } -@media (max-width: 768px) { - .cart-btn { - top: 15px; - right: 15px; - width: 44px; - height: 44px; + .gate-input-row, + .gate-alt-row, + .gate-success-btns { + grid-template-columns: 1fr; + } + + .gate-btn--full { + grid-column: auto; } - .cart-sidebar { + .shop-hero-inner { + padding: 82px 0 44px; + } + + .shop-user-pill { + top: 18px; + right: 50%; + transform: translateX(50%); + } + + .shop-controls { + flex-direction: column; + } + + .shop-search { width: 100%; - right: -100%; } - .cart-item-info h4 { - font-size: 0.8rem; + .shop-cats { + display: grid; + grid-template-columns: repeat(3, 1fr); + } + + .shop-wrap { + padding: 52px 0 68px; + } + + .product-grid { + grid-template-columns: 1fr; + } + + .product-page-wrap { + padding: 40px 0 64px; + } + + .product-page-left { + min-height: 300px; + padding: 34px; + } + + .product-page-img-wrap img { + max-height: 300px; + } + + .product-page-right { + padding: 38px 26px; + } +} + +@media (max-width: 768px) { + .cart-label { + display: none; + } + + .topbar > .cart-btn { + padding-inline: 13px; + } +} + +@media (max-width: 420px) { + .gate-card { + padding-right: 18px; + padding-left: 18px; + } + + .cat-btn { + padding-right: 0.45rem; + padding-left: 0.45rem; + font-size: 0.72rem; + } + + .product-body, + .product-footer { + padding-right: 18px; + padding-left: 18px; } - .cart-item-price { - font-size: 0.8rem; + .promo-row { + grid-template-columns: 1fr; } } diff --git a/assets/css/style.css b/assets/css/style.css deleted file mode 100644 index 3c79268..0000000 --- a/assets/css/style.css +++ /dev/null @@ -1,1069 +0,0 @@ -@font-face { - font-family: 'Minecraft Ten v2'; - src: url('../mojang/fonts/Minecraft-Tenv2.ttf') format('truetype'); - font-display: swap; -} - -@font-face { - font-family: 'Minecraft Seven v2'; - src: url('../mojang/fonts/Minecraft-Seven_v2.ttf') format('truetype'); - font-display: swap; -} - -* { - margin: 0; - padding: 0; - box-sizing: border-box; -} - -body { - font-family: 'Minecraft Seven v2', 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; - background-image: url('../mojang/img/bg-wool-white.png'); - background-size: cover; - background-position: center; - background-repeat: no-repeat; - background-attachment: fixed; - color: #333333; - overflow-x: hidden; -} - -h1, h2, h3, h4, h5, h6 { - font-family: 'Minecraft Ten v2', 'Impact', 'Trebuchet MS', 'Segoe UI', sans-serif; -} - -/* Topbar Styles with enhanced glow */ -.topbar { - position: fixed; - top: 0; - left: 0; - right: 0; - height: 80px; - background: rgba(255, 255, 255, 0.95); - backdrop-filter: blur(15px); - display: flex; - align-items: center; - justify-content: space-between; - padding: 0 40px; - z-index: 1003; - border-bottom: 1px solid rgba(255, 206, 2, 0.2); - box-shadow: 0 4px 20px rgba(255, 206, 2, 0.1); -} - -/* Hamburger Menu Styles */ -.hamburger { - width: 35px; - height: 35px; - display: flex; - flex-direction: column; - justify-content: center; - gap: 4px; - cursor: pointer; - z-index: 1002; - padding: 8px; - border-radius: 8px; - transform: rotate(0deg); - transition: all 0.4s ease, transform 0.4s ease; -} - - .hamburger:hover { - background: rgba(255, 206, 2, 0.1); - box-shadow: 0 0 20px rgba(255, 206, 2, 0.3); - } - - .hamburger span { - width: 100%; - height: 3px; - background: linear-gradient(45deg, #333, #555); - border-radius: 2px; - transition: all 0.4s ease; - transform-origin: center; - box-shadow: 0 0 6px rgba(255, 206, 2, 0.4); - } - - /* Hamburger Animation - Simple 90 degree rotation, keep all 3 lines */ - .hamburger.active { - transform: rotate(90deg); - } - - .hamburger.active span { - background: linear-gradient(45deg, #ffce02, #e6b800); - box-shadow: 0 0 8px rgba(255, 206, 2, 0.6); - } - -/* Mobile Menu Overlay - Desktop sidebar, mobile full screen */ -.menu-overlay { - position: fixed; - top: 0; - left: -400px; - width: 400px; - height: 100vh; - background: rgba(255, 255, 255, 0.98); - backdrop-filter: blur(20px); - z-index: 1001; - transition: left 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94); - display: flex; - flex-direction: column; - padding-top: 100px; - overflow-y: auto; - box-shadow: 0 0 50px rgba(255, 206, 2, 0.2); -} - - .menu-overlay.active { - left: 0; - } - -/* Navigation Menu */ -.nav-menu { - display: flex; - flex-direction: column; - align-items: center; - gap: 25px; - padding: 40px 20px; - max-width: 400px; - margin: 0 auto; - width: 100%; -} - -.nav-item { - text-decoration: none; - font-family: 'Minecraft Seven v2', monospace; - font-size: 1.1rem; - color: #333; - padding: 18px 35px; - border-radius: 16px; - background: rgba(255, 255, 255, 0.8); - border: 1px solid rgba(255, 206, 2, 0.2); - transition: all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94); - width: 100%; - text-align: center; - position: relative; - overflow: hidden; - box-shadow: 0 4px 15px rgba(0,0,0,0.05); -} - - .nav-item::before { - content: ''; - position: absolute; - top: 0; - left: -100%; - width: 100%; - height: 100%; - background: linear-gradient(90deg, transparent, rgba(255, 206, 2, 0.3), transparent); - transition: left 0.6s; - } - - .nav-item:hover::before { - left: 100%; - } - - .nav-item:hover { - background: rgba(255, 255, 255, 0.95); - border-color: rgba(255, 206, 2, 0.4); - transform: translateY(-3px) scale(1.02); - box-shadow: 0 10px 30px rgba(0,0,0,0.1), 0 0 20px rgba(255, 206, 2, 0.3); - } - - .nav-item:active { - transform: translateY(-1px) scale(1.01); - } - - /* Special styling for different nav items */ - .nav-item.primary { - background: linear-gradient(135deg, #ffce02, #ffd93d); - color: #333; - border-color: #ffce02; - box-shadow: 0 4px 15px rgba(255, 206, 2, 0.3), 0 0 20px rgba(255, 206, 2, 0.2); - } - - .nav-item.primary:hover { - background: linear-gradient(135deg, #ffd93d, #ffce02); - box-shadow: 0 15px 40px rgba(255, 206, 2, 0.4), 0 0 30px rgba(255, 206, 2, 0.5); - transform: translateY(-4px) scale(1.03); - } - - .nav-item.secondary { - background: linear-gradient(135deg, rgba(34, 197, 94, 0.1), rgba(34, 197, 94, 0.2)); - border-color: rgba(34, 197, 94, 0.3); - color: #22c55e; - box-shadow: 0 4px 15px rgba(34, 197, 94, 0.1); - } - - .nav-item.secondary:hover { - background: linear-gradient(135deg, rgba(34, 197, 94, 0.2), rgba(34, 197, 94, 0.3)); - box-shadow: 0 15px 40px rgba(34, 197, 94, 0.2), 0 0 30px rgba(34, 197, 94, 0.3); - } - -/* Menu Footer */ -.menu-footer { - margin-top: auto; - padding: 30px 20px; - text-align: center; - border-top: 1px solid rgba(255, 206, 2, 0.2); -} - - .menu-footer p { - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.7rem; - color: #666; - margin-bottom: 20px; - } - -.social-links { - display: flex; - justify-content: center; - gap: 15px; -} - -.social-link { - width: 45px; - height: 45px; - background: rgba(255, 206, 2, 0.1); - border: 1px solid rgba(255, 206, 2, 0.3); - border-radius: 50%; - display: flex; - align-items: center; - justify-content: center; - text-decoration: none; - color: #ffce02; - font-size: 1.1rem; - transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94); - box-shadow: 0 4px 15px rgba(255, 206, 2, 0.1); -} - - .social-link:hover { - background: linear-gradient(135deg, #ffce02, #ffd93d); - color: #333; - box-shadow: 0 4px 15px rgba(255, 206, 2, 0.3); - } - -/* Logo with enhanced interactivity */ -.logo { - height: 27px; - display: flex; - align-items: center; - justify-content: center; - position: absolute; - left: 50%; - transform: translateX(-50%); - cursor: pointer; - transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94); - padding: 8px; -} - - .logo:hover { - transform: translateX(-50%) scale(1.1); - } - - .logo:active { - transform: translateX(-50%) scale(1.05); - } - -.logo-img { - max-width: 400%; - max-height: 400%; - object-fit: contain; - transition: all 0.3s ease; -} - -.logo:hover .logo-img { - filter: drop-shadow(0 0 10px rgba(255, 206, 2, 0.6)); -} - -/* About button with glow */ -.about-btn { - padding: 12px 24px; - background: linear-gradient(135deg, #333, #555); - color: white; - text-decoration: none; - border-radius: 20px; - font-weight: 600; - transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94); - border: none; - cursor: pointer; - font-size: 12px; - font-family: 'Minecraft Seven v2', monospace; - box-shadow: 0 4px 15px rgba(0,0,0,0.2); -} - - .about-btn:hover { - background: linear-gradient(135deg, #555, #777); - transform: translateY(-2px) scale(1.05); - box-shadow: 0 8px 25px rgba(0,0,0,0.3), 0 0 20px rgba(255, 206, 2, 0.2); - } - -/* Landing Section with subtle glow */ -.landing { - height: 100vh; - background-image: url('../mojang/img/bg-grass.png'); - background-size: cover; - background-position: center; - background-repeat: no-repeat; - display: flex; - flex-direction: column; - position: relative; - padding-top: 80px; - border-radius: 25px; - margin: 15px; - margin-top: 100px; - box-shadow: 0 25px 80px rgba(0,0,0,0.15), 0 0 40px rgba(255, 206, 2, 0.1); - overflow: hidden; - max-height: 650px; -} - - .landing::before { - content: ''; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: linear-gradient(45deg, rgba(255, 206, 2, 0.05), transparent); - opacity: 0.7; - z-index: 0; - } - -.landing-content { - flex: 1; - display: flex; - flex-direction: column; - justify-content: flex-start; - align-items: center; - padding: 40px 40px 60px; - max-width: 1200px; - margin: 0 auto; - width: 100%; - position: relative; - z-index: 2; -} - -/* Hero Card with enhanced glow */ -.hero-card { - background: rgba(255, 255, 255, 0.95); - backdrop-filter: blur(20px); - border-radius: 25px; - padding: 30px 35px 5px 35px; - box-shadow: 0 25px 80px rgba(0,0,0,0.15), 0 0 40px rgba(255, 206, 2, 0.2), inset 0 1px 1px rgba(255, 255, 255, 0.9); - border: 1px solid rgba(255, 206, 2, 0.3); - background-image: url('../mojang/img/bg-wool-white.png'); - background-size: cover; - background-position: center; - background-repeat: no-repeat; - position: relative; - overflow: hidden; - margin-top: 0px; - margin-bottom: 0px; - max-width: 850px; - transition: all 0.3s ease; -} - - .hero-card:hover { - transform: translateY(-2px); - box-shadow: none; - } - - .hero-card::before { - content: ''; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: radial-gradient(circle at center, rgba(255, 206, 2, 0.05), transparent); - z-index: -1; - } - -/* Animated Heading with text glow */ -.hero-heading { - text-align: center; - font-size: clamp(2rem, 6vw, 3.5rem); - font-weight: 400; - color: #333; - margin-bottom: 0; - line-height: 1.4; - font-family: 'Minecraft Ten v2', monospace; - position: relative; - z-index: 1; -} - -.hero-line-1 { - display: block; - text-shadow: 0 0 10px rgba(0,0,0,0.1); -} - -.hero-line-2 { - display: block; - color: #ffce02; - text-shadow: 0 0 20px rgba(255, 206, 2, 0.5), 0 0 40px rgba(255, 206, 2, 0.3); -} - -.animated-word { - color: #ffce02; - display: block; - position: relative; - text-align: center; - margin-top: 0.2em; - text-shadow: 0 0 20px rgba(255, 206, 2, 0.5), 0 0 40px rgba(255, 206, 2, 0.3); -} - -.word-container { - display: inline-block; - position: relative; - height: 1.3em; - overflow: hidden; - min-width: 500px; -} - -.words-list { - position: relative; - animation: perfectWordScroll 9s ease-in-out infinite; -} - -.word { - display: block; - height: 1.3em; - line-height: 1.3em; - text-align: center; - padding: 0; - font-family: 'Minecraft Ten v2', monospace; - animation: glow 2s ease-in-out infinite alternate; -} - -@keyframes glow { - from { - text-shadow: 0 0 10px rgba(255, 206, 2, 0.5); - } - - to { - text-shadow: 0 0 20px rgba(255, 206, 2, 0.7); - } -} - -@keyframes perfectWordScroll { - 0%, 25% { - transform: translateY(0); - } - - 33%, 58% { - transform: translateY(-1.3em); - } - - 66%, 91% { - transform: translateY(-2.6em); - } - - 100% { - transform: translateY(-3.9em); - } -} - -/* Bottom Content with enhanced interactivity */ -.bottom-content { - display: flex; - flex-direction: column; - align-items: center; - gap: 25px; - margin-top: 45px; -} - -.server-info { - background: rgba(255, 255, 255, 0.95); - backdrop-filter: blur(15px); - border: none; - border-radius: 16px; - padding: 18px 28px; - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.9rem; - color: #ffce02; - font-weight: 400; - box-shadow: 0 8px 32px rgba(0,0,0,0.1), 0 0 20px rgba(255, 206, 2, 0.2); - border: 1px solid rgba(255, 206, 2, 0.3); - cursor: pointer; - transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94), transform 0.3s ease; - position: relative; -} - - .server-info:hover { - transform: translateY(-5px); - box-shadow: none; - background: rgba(255, 255, 255, 1); - border-color: rgba(255, 206, 2, 0.5); - } - - .server-info::after { - content: 'Copied!'; - position: absolute; - top: -35px; - left: 50%; - transform: translateX(-50%); - background: linear-gradient(135deg, rgba(34, 197, 94, 0.9), rgba(34, 197, 94, 0.8)); - color: white; - padding: 6px 12px; - border-radius: 8px; - font-size: 0.7rem; - opacity: 0; - pointer-events: none; - transition: all 0.3s ease; - box-shadow: 0 4px 15px rgba(34, 197, 94, 0.3); - } - - .server-info.copied::after { - opacity: 1; - transform: translateX(-50%) translateY(-5px); - } - - .server-info:active { - transform: translateY(-5px) scale(1.05); - box-shadow: 0 15px 50px rgba(0,0,0,0.15), 0 0 30px rgba(255, 206, 2, 0.3); - } - -.launch-btn { - background: linear-gradient(135deg, rgba(255, 255, 255, 0.95), rgba(255, 255, 255, 0.9)); - color: #22c55e; - padding: 18px 36px; - border: none; - border-radius: 16px; - font-size: 0.9rem; - font-weight: 500; - cursor: pointer; - text-decoration: none; - display: inline-block; - transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94); - box-shadow: 0 8px 32px rgba(0,0,0,0.1), 0 0 20px rgba(34, 197, 94, 0.2); - backdrop-filter: blur(15px); - border: 1px solid rgba(34, 197, 94, 0.3); - font-family: 'Minecraft Seven v2', monospace; -} - - .launch-btn:hover { - transform: translateY(-3px) scale(1.02); - box-shadow: 0 15px 50px rgba(0,0,0,0.2), 0 0 30px rgba(34, 197, 94, 0.4); - background: linear-gradient(135deg, rgba(255, 255, 255, 1), rgba(255, 255, 255, 0.95)); - } - -/* Transition Section */ -.transition-section { - min-height: 10vh; - background-image: url('../mojang/img/bg-wool-white-dark.png'); - background-size: cover; - background-position: center; - background-repeat: repeat-x; - display: flex; - align-items: center; - justify-content: center; - position: relative; - overflow: hidden; -} - -.about-content { - max-width: 800px; - margin: 0 auto; - text-align: center; - color: white; -} - -.about-section h2 { - font-size: 2rem; - margin-bottom: 30px; - color: #ffce02; - font-weight: 400; - font-family: 'Minecraft Ten v2', monospace; - text-shadow: 0 0 20px rgba(255, 206, 2, 0.5), 0 0 40px rgba(255, 206, 2, 0.3); -} - -.about-section p { - font-size: 0.9rem; - line-height: 1.8; - margin-bottom: 20px; - opacity: 0.9; - font-family: 'Minecraft Seven v2', monospace; -} - -/* How to Join Section */ -.howtojoin { - min-height: 50vh; - background-image: url('../mojang/img/bg-wool-dark.png'); - background-size: cover; - background-position: center; - background-repeat: repeat; - display: flex; - align-items: center; - justify-content: center; - position: relative; - overflow: hidden; - padding: 80px 40px; -} - -.howtojoin-heading { - font-family: 'Minecraft Ten v2', monospace; - font-size: clamp(2.5rem, 7vw, 4rem); - font-weight: 400; - color: #ffffff; - text-align: center; - text-shadow: 0 0 20px rgba(255, 206, 2, 0.5), 0 0 40px rgba(255, 206, 2, 0.3); - margin-bottom: 60px; -} - - .howtojoin-heading::after { - content: "Applies to Minecraft server only"; - display: block; - font-size: 0.8rem; - color: #cccccc; - margin-top: 10px; - font-family: 'Minecraft Seven v2', monospace; - opacity: 0.8; - } - -.howtojoin-cards { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); - gap: 30px; - max-width: 1200px; - width: 100%; - padding: 0 20px; -} - -.flip-card { - perspective: 1000px; - height: 320px; - cursor: pointer; -} - -.flip-card-inner { - position: relative; - width: 100%; - height: 100%; - transition: transform 0.6s; - transform-style: preserve-3d; -} - -.flip-card:hover .flip-card-inner { - transform: rotateY(180deg); - transition: transform 0.4s ease-in-out; /* Reduced duration */ -} - -.flip-card-front, -.flip-card-back { - position: absolute; - width: 100%; - height: 100%; - backface-visibility: hidden; - border-radius: 20px; - padding: 30px; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3); -} - -.flip-card-front { - background: rgba(255, 255, 255, 0.95); - backdrop-filter: blur(15px); - border: 2px solid rgba(255, 206, 2, 0.3); -} - -.flip-card-back { - background: linear-gradient(135deg, #ffce02, #ffd93d); - transform: rotateY(180deg); - border: 2px solid rgba(255, 206, 2, 0.5); -} - -.flip-card-icon { - font-size: 4rem; - margin-bottom: 30px; - filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.2)); -} - -.flip-card-title { - font-family: 'Minecraft Ten v2', monospace; - font-size: 1.5rem; - color: #333; - margin-bottom: 15px; - text-align: center; -} - -.flip-card-subtitle { - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.9rem; - color: #666; - text-align: center; -} - -.flip-card-back-content { - text-align: center; - width: 100%; -} - -.flip-card-back-title { - font-family: 'Minecraft Ten v2', monospace; - font-size: 1.3rem; - color: #333; - margin-bottom: 20px; -} - -.flip-card-back-text { - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.85rem; - color: #333; - line-height: 1.6; - margin-bottom: 25px; -} - -.flip-card-button { - font-family: 'Minecraft Seven v2', monospace; - font-size: 0.9rem; - color: #333; - background: rgba(255, 255, 255, 0.9); - padding: 14px 24px; - border-radius: 12px; - font-weight: bold; - border: 2px solid rgba(51, 51, 51, 0.2); - cursor: pointer; - transition: all 0.3s ease; - text-decoration: none; - display: inline-block; - position: relative; -} - - .flip-card-button:hover { - background: rgba(255, 255, 255, 1); - transform: translateY(-2px); - box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2); - border-color: rgba(51, 51, 51, 0.4); - animation: pulse 0.3s ease; - } - - .flip-card-button:active { - transform: translateY(0); - } - - .flip-card-button.disabled { - opacity: 0.6; - cursor: not-allowed; - background: rgba(200, 200, 200, 0.5); - } - - .flip-card-button.disabled:hover { - transform: none; - box-shadow: none; - } - - .flip-card-button::after { - content: 'Copied!'; - position: absolute; - top: -35px; - left: 50%; - transform: translateX(-50%); - background: linear-gradient(135deg, rgba(34, 197, 94, 0.9), rgba(34, 197, 94, 0.8)); - color: white; - padding: 6px 12px; - border-radius: 8px; - font-size: 0.7rem; - opacity: 0; - pointer-events: none; - transition: all 0.3s ease; - box-shadow: 0 4px 15px rgba(34, 197, 94, 0.3); - white-space: nowrap; - } - - .flip-card-button.copied::after { - opacity: 1; - transform: translateX(-50%) translateY(-5px); - } - -/* Responsive Design */ -@media (max-width: 768px) { - .topbar { - padding: 0 20px; - height: 70px; - } - - .logo { - width: 66px; - height: 66px; - } - - .about-btn { - display: none; - } - - /* Mobile fullscreen menu overlay */ - .menu-overlay { - left: -100%; - width: 100vw; - padding-top: 0; /* Remove padding to cover entire screen */ - box-shadow: none; - } - - .menu-overlay.active { - left: 0; - } - - .nav-menu { - max-width: none; - width: 100%; - padding: 100px 25px 40px; /* Add top padding for content spacing */ - gap: 20px; - } - - .landing { - margin: 8px; - margin-top: 80px; - border-radius: 20px; - } - - .hero-card { - padding: 25px 20px 15px 20px; - border-radius: 20px; - } - - .hero-heading { - font-size: clamp(1.5rem, 8vw, 2.5rem); - line-height: 1.2; - margin-bottom: 0; - } - - .word-container { - min-width: 350px; - } - - .server-info { - display: none; - } - - .bottom-content { - padding: 0 20px; - gap: 20px; - } - - .launch-btn { - padding: 16px 32px; - font-size: 0.8rem; - width: 100%; - max-width: 300px; - text-align: center; - } - - .landing-content { - padding: 40px 20px; - } - - .howtojoin { - display: flex; - flex-direction: column; - align-items: center; - } - - .howtojoin-heading { - margin-bottom: 20px; - } - - .howtojoin-cards { - margin-top: 20px; - } - - .howtojoin-cards > .card { - margin: 0 auto; - } -} - -@media (max-width: 480px) { - .hero-heading { - font-size: clamp(1.2rem, 10vw, 2rem); - } - - .word-container { - min-width: 300px; - } - - .landing { - margin: 5px; - margin-top: 75px; - border-radius: 16px; - } - - .hero-card { - padding: 20px; - border-radius: 16px; - margin-top: -30px; - } -} - -/* Optimized Animations */ - -/* Simplified glow animation */ -@keyframes glow { - from { - text-shadow: 0 0 10px rgba(255, 206, 2, 0.5); - } - to { - text-shadow: 0 0 20px rgba(255, 206, 2, 0.7); - } -} - -/* Optimized word scroll animation */ -@keyframes perfectWordScroll { - 0%, 25% { - transform: translateY(0); - } - 33%, 58% { - transform: translateY(-1.3em); - } - 66%, 91% { - transform: translateY(-2.6em); - } - 100% { - transform: translateY(-3.9em); - } -} - -/* Removed box-shadow and reduced hover effects */ -.hero-card:hover { - transform: translateY(-2px); - box-shadow: none; -} - -.server-info:hover { - transform: translateY(-5px); - box-shadow: none; -} - -.flip-card:hover .flip-card-inner { - transform: rotateY(180deg); - transition: transform 0.4s ease-in-out; /* Reduced duration */ -} - -/* Removed wobble animation for better performance */ -.social-link:hover { - background: linear-gradient(135deg, #ffce02, #ffd93d); - color: #333; - box-shadow: 0 4px 15px rgba(255, 206, 2, 0.3); -} - -/* Disabled hover effects on mobile */ -@media (hover: none) { - .hero-card:hover, .server-info:hover, .flip-card:hover .flip-card-inner { - transform: none; - box-shadow: none; - } -} - -.articles-title { - padding-top: 6rem; - padding-bottom: 1rem; - padding-left: 2rem; - padding-right: 2rem; -} - -.articles-header { - display: flex; - justify-content: space-between; - align-items: center; -} - -#sort-select { - padding: 0.4rem 0.8rem; - font-size: 1rem; - border-radius: 6px; - border: 1px solid #ccc; -} - -.banner { - height: 180px; - background-size: cover; - background-position: center; - width: 100%; -} - -.article-grid { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(260px, 270px)); - justify-content: start; /* keeps them centered */ - gap: 2rem; - max-width: 1200px; /* optional: cap total width */ - padding: 0 2rem; /* side spacing */ -} - - -.article-card { - background: #f9f9f9; /* light card background */ - border: 1px solid #ddd; /* subtle border for contrast */ - border-radius: 8px; - overflow: hidden; - box-shadow: 0 2px 6px rgba(0,0,0,0.1); - transition: transform 0.2s ease; -} - - .article-card:hover { - transform: translateY(-4px); /* subtle hover lift */ - } - - .article-card img.banner { - width: 100%; - height: 180px; - object-fit: cover; - display: block; - } - -.card-content { - padding: 1rem; - color: #333; /* dark text for white background */ -} - -.type-label { - display: inline-block; - background: #ffd700; - color: #000; - font-size: 0.75rem; - font-weight: bold; - padding: 0.3em 0.6em; - border-radius: 4px; - margin-bottom: 0.5em; - text-transform: uppercase; -} - -.sort-controls { - display: flex; - align-items: center; - gap: 1rem; -} - -.featured-news { - margin-top: 6rem; - margin-left: 2rem; - margin-bottom: -4rem; -} - -.featured-title { - margin-bottom: 1rem; -} - -.sort-controls { - margin-top: 5rem; - margin-right: 2rem; -} - -.featured-grid { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(260px, 270px)); - gap: 2rem; /* optional spacing between cards */ -} - -.article-card a { - text-decoration: none; - color: inherit; -} - -.sort-controls select { - font-family: 'Minecraft Seven v2', sans-serif; - font-size: 1rem; - line-height: 1.2; /* tighter line height */ - padding: 6px 10px; /* give vertical breathing room */ - box-sizing: border-box; - height: auto; - vertical-align: middle; -} - -.spacing-start { - margin-top: 5rem; -} diff --git a/assets/icons/site/android-chrome-192x192.png b/assets/icons/site/android-chrome-192x192.png new file mode 100644 index 0000000..155b7ff Binary files /dev/null and b/assets/icons/site/android-chrome-192x192.png differ diff --git a/assets/icons/site/android-chrome-512x512.png b/assets/icons/site/android-chrome-512x512.png new file mode 100644 index 0000000..05966c3 Binary files /dev/null and b/assets/icons/site/android-chrome-512x512.png differ diff --git a/assets/icons/site/apple-touch-icon.png b/assets/icons/site/apple-touch-icon.png new file mode 100644 index 0000000..fcb475b Binary files /dev/null and b/assets/icons/site/apple-touch-icon.png differ diff --git a/assets/icons/site/favicon-16x16.png b/assets/icons/site/favicon-16x16.png new file mode 100644 index 0000000..b8925be Binary files /dev/null and b/assets/icons/site/favicon-16x16.png differ diff --git a/assets/icons/site/favicon-32x32.png b/assets/icons/site/favicon-32x32.png new file mode 100644 index 0000000..1c161c3 Binary files /dev/null and b/assets/icons/site/favicon-32x32.png differ diff --git a/assets/icons/site/favicon.ico b/assets/icons/site/favicon.ico new file mode 100644 index 0000000..d152fad Binary files /dev/null and b/assets/icons/site/favicon.ico differ diff --git a/assets/js/extra.js b/assets/js/extra.js new file mode 100644 index 0000000..af23516 --- /dev/null +++ b/assets/js/extra.js @@ -0,0 +1,661 @@ +const CART_STORAGE_KEY = "pwindows_cart"; +const PROMO_STORAGE_KEY = "pwindows_promo"; + +let userRegion = "US"; +let userCurrency = "USD"; +let menuController; +let cartController; +let locationPromise; + +function announce(message) { + const status = document.getElementById("site-status"); + if (!status) return; + status.textContent = ""; + window.requestAnimationFrame(() => { + status.textContent = message; + }); +} + +function getFocusable(container) { + return Array.from( + container.querySelectorAll( + 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])', + ), + ).filter((element) => !element.hidden && element.getAttribute("aria-hidden") !== "true"); +} + +function syncBodyLock() { + const anyOpen = Boolean(menuController?.isOpen() || cartController?.isOpen()); + document.body.classList.toggle("overlay-open", anyOpen); +} + +function createOverlayController({ trigger, container, panel, overlay, openClass, openLabel, closeLabel }) { + let lastFocused = null; + + function isOpen() { + return container.classList.contains(openClass); + } + + function setOpen(open, { restoreFocus = true, moveFocus = true } = {}) { + if (open === isOpen()) return; + + if (open) { + lastFocused = document.activeElement; + container.classList.add(openClass); + overlay?.classList.add(openClass); + container.setAttribute("aria-hidden", "false"); + container.removeAttribute("inert"); + overlay?.setAttribute("aria-hidden", "false"); + trigger.setAttribute("aria-expanded", "true"); + trigger.setAttribute("aria-label", closeLabel); + if (moveFocus) window.requestAnimationFrame(() => getFocusable(panel)[0]?.focus()); + } else { + container.classList.remove(openClass); + overlay?.classList.remove(openClass); + container.setAttribute("aria-hidden", "true"); + container.setAttribute("inert", ""); + overlay?.setAttribute("aria-hidden", "true"); + trigger.setAttribute("aria-expanded", "false"); + trigger.setAttribute("aria-label", openLabel); + if (restoreFocus && lastFocused instanceof HTMLElement) lastFocused.focus(); + } + + syncBodyLock(); + } + + function handleKeydown(event) { + if (!isOpen()) return; + if (event.key === "Escape") { + event.preventDefault(); + setOpen(false); + return; + } + if (event.key !== "Tab") return; + + const focusable = getFocusable(panel); + if (!focusable.length) { + event.preventDefault(); + return; + } + const first = focusable[0]; + const last = focusable[focusable.length - 1]; + if (event.shiftKey && document.activeElement === first) { + event.preventDefault(); + last.focus(); + } else if (!event.shiftKey && document.activeElement === last) { + event.preventDefault(); + first.focus(); + } + } + + document.addEventListener("keydown", handleKeydown); + return { isOpen, setOpen }; +} + +function setupOverlays() { + const menuButton = document.getElementById("hamburger"); + const menu = document.getElementById("mobileMenu"); + const menuPanel = menu?.querySelector(".nav-menu"); + const cartButton = document.getElementById("cart-btn"); + const cart = document.getElementById("cart-sidebar"); + const cartOverlay = document.getElementById("cart-overlay"); + + if (menuButton && menu && menuPanel) { + menuController = createOverlayController({ + trigger: menuButton, + container: menu, + panel: menuPanel, + openClass: "active", + openLabel: "Open site menu", + closeLabel: "Close site menu", + }); + menuButton.addEventListener("click", () => { + const open = !menuController.isOpen(); + if (open) cartController?.setOpen(false, { restoreFocus: false }); + menuController.setOpen(open); + }); + menu.addEventListener("click", (event) => { + if (event.target === menu || event.target.closest("a")) menuController.setOpen(false); + }); + } + + if (cartButton && cart && cartOverlay) { + cartController = createOverlayController({ + trigger: cartButton, + container: cart, + panel: cart, + overlay: cartOverlay, + openClass: "open", + openLabel: "Open shopping cart", + closeLabel: "Close shopping cart", + }); + cartButton.addEventListener("click", () => { + const open = !cartController.isOpen(); + if (open) { + menuController?.setOpen(false, { restoreFocus: false }); + updateCartUI(); + } + cartController.setOpen(open); + }); + cartOverlay.addEventListener("click", () => cartController.setOpen(false)); + document.getElementById("cart-close")?.addEventListener("click", () => cartController.setOpen(false)); + } + + window.addEventListener("resize", () => { + if (window.innerWidth > 768 && menuController?.isOpen()) menuController.setOpen(false); + }); +} + +function getLocationFromIP() { + if (!locationPromise) { + locationPromise = fetch("https://ipapi.co/json/") + .then((response) => (response.ok ? response.json() : null)) + .then((data) => data?.country_code?.toUpperCase() || null) + .catch(() => null); + } + return locationPromise; +} + +function detectRegion() { + const locales = [navigator.language, ...(navigator.languages || [])].filter(Boolean); + for (const locale of locales) { + try { + const region = typeof Intl.Locale === "function" ? new Intl.Locale(locale).region : null; + if (region) return region.toUpperCase(); + } catch (_) { + const match = locale.match(/[-_]([A-Z]{2})/i); + if (match) return match[1].toUpperCase(); + } + } + return "US"; +} + +function currencyByRegion(region) { + if (region === "MY") return "MYR"; + if (region === "CN") return "CNY"; + return "USD"; +} + +function formatCurrency(amount, currency = userCurrency) { + const numericAmount = Number(amount); + if (!Number.isFinite(numericAmount)) return "β€”"; + try { + return new Intl.NumberFormat(undefined, { + style: "currency", + currency, + minimumFractionDigits: 2, + maximumFractionDigits: 2, + }).format(numericAmount); + } catch (_) { + return `$${numericAmount.toFixed(2)}`; + } +} + +function priceForRegion(source) { + const usd = Number.parseFloat(source.dataset.priceUsd); + const myr = Number.parseFloat(source.dataset.priceMyr); + const cny = Number.parseFloat(source.dataset.priceCny); + if (userRegion === "MY" && Number.isFinite(myr)) return { amount: myr, currency: "MYR", label: "Malaysia" }; + if (userRegion === "CN" && Number.isFinite(cny)) return { amount: cny, currency: "CNY", label: "China" }; + return { amount: usd, currency: "USD", label: "USD" }; +} + +async function initRegionalPrices() { + userRegion = (await getLocationFromIP()) || detectRegion(); + userCurrency = currencyByRegion(userRegion); + window.userRegion = userRegion; + window.userCurrency = userCurrency; + + document.querySelectorAll(".js-regional-price").forEach((node) => { + const price = priceForRegion(node); + node.textContent = formatCurrency(price.amount, price.currency); + }); + + const detailPrice = document.getElementById("product-page-price"); + if (detailPrice) { + const price = priceForRegion(detailPrice); + const label = document.getElementById("price-label"); + const buyPrice = document.getElementById("buy-price"); + if (label) label.textContent = price.label; + if (buyPrice) buyPrice.textContent = formatCurrency(price.amount, price.currency); + } + + const donateCurrency = document.getElementById("donate-currency"); + if (donateCurrency) donateCurrency.textContent = userCurrency === "MYR" ? "RM" : userCurrency === "CNY" ? "Β₯" : "$"; + updateCartUI(); +} + +function getCart() { + try { + const value = JSON.parse(localStorage.getItem(CART_STORAGE_KEY) || "[]"); + return Array.isArray(value) ? value : []; + } catch (_) { + return []; + } +} + +function saveCart(cart) { + localStorage.setItem(CART_STORAGE_KEY, JSON.stringify(cart)); + updateCartUI(); +} + +function getItemPrice(item) { + if (userRegion === "MY") return Number(item.priceMyr) || 0; + if (userRegion === "CN") return Number(item.priceCny) || 0; + return Number(item.priceUsd) || 0; +} + +function productFromElement(element) { + return { + productId: element.dataset.productId, + coins: Number.parseInt(element.dataset.coins, 10) || 0, + title: element.dataset.title || "Product", + image: element.dataset.image || "/assets/img/products/placeholder.png", + stripeId: element.dataset.stripeId || "", + priceUsd: Number.parseFloat(element.dataset.priceUsd) || 0, + priceMyr: Number.parseFloat(element.dataset.priceMyr) || 0, + priceCny: Number.parseFloat(element.dataset.priceCny) || 0, + quantity: 1, + }; +} + +function addProduct(product, feedbackButton) { + const cart = getCart(); + const existing = cart.find((item) => item.productId === product.productId); + if (existing) existing.quantity += 1; + else cart.push(product); + saveCart(cart); + announce(`${product.title} added to cart.`); + + if (feedbackButton) { + const original = feedbackButton.textContent; + feedbackButton.textContent = "Added! βœ“"; + feedbackButton.disabled = true; + window.setTimeout(() => { + feedbackButton.textContent = original; + feedbackButton.disabled = false; + }, 1600); + } +} + +function removeCartItem(productId) { + const item = getCart().find((entry) => entry.productId === productId); + saveCart(getCart().filter((entry) => entry.productId !== productId)); + announce(`${item?.title || "Item"} removed from cart.`); +} + +function changeCartQuantity(productId, change) { + const cart = getCart(); + const item = cart.find((entry) => entry.productId === productId); + if (!item) return; + item.quantity += change; + if (item.quantity <= 0) removeCartItem(productId); + else saveCart(cart); +} + +function createCartItem(item) { + const wrapper = document.createElement("article"); + wrapper.className = "cart-item"; + + const image = document.createElement("img"); + image.className = "cart-item-img"; + image.src = item.image; + image.alt = ""; + image.addEventListener("error", () => { + image.src = "/assets/img/products/placeholder.png"; + }, { once: true }); + + const info = document.createElement("div"); + info.className = "cart-item-info"; + const title = document.createElement("h3"); + title.textContent = item.title; + const coins = document.createElement("p"); + coins.className = "cart-item-coins"; + coins.textContent = item.coins ? `${item.coins.toLocaleString()} PCoins` : "PWindows Support"; + const price = document.createElement("p"); + price.className = "cart-item-price"; + price.textContent = formatCurrency(getItemPrice(item)); + info.append(title, coins, price); + + const controls = document.createElement("div"); + controls.className = "cart-item-controls"; + const decrease = document.createElement("button"); + decrease.className = "qty-btn btn"; + decrease.type = "button"; + decrease.textContent = "βˆ’"; + decrease.setAttribute("aria-label", `Decrease ${item.title} quantity`); + decrease.addEventListener("click", () => changeCartQuantity(item.productId, -1)); + const quantity = document.createElement("span"); + quantity.className = "qty-display"; + quantity.textContent = item.quantity; + quantity.setAttribute("aria-label", `Quantity ${item.quantity}`); + const increase = document.createElement("button"); + increase.className = "qty-btn btn"; + increase.type = "button"; + increase.textContent = "+"; + increase.setAttribute("aria-label", `Increase ${item.title} quantity`); + increase.addEventListener("click", () => changeCartQuantity(item.productId, 1)); + const remove = document.createElement("button"); + remove.className = "cart-item-remove btn"; + remove.type = "button"; + remove.textContent = "Remove"; + remove.setAttribute("aria-label", `Remove ${item.title} from cart`); + remove.addEventListener("click", () => removeCartItem(item.productId)); + controls.append(decrease, quantity, increase, remove); + + wrapper.append(image, info, controls); + return wrapper; +} + +function updateCartUI() { + const count = document.getElementById("cart-count"); + const itemsContainer = document.getElementById("cart-items"); + const subtotalNode = document.getElementById("cart-subtotal"); + const totalNode = document.getElementById("cart-total"); + if (!count || !itemsContainer || !subtotalNode || !totalNode) return; + + const cart = getCart(); + const totalItems = cart.reduce((sum, item) => sum + (Number(item.quantity) || 0), 0); + count.textContent = totalItems; + count.hidden = totalItems === 0; + const cartLabel = cartController?.isOpen() + ? "Close shopping cart" + : totalItems + ? `Open shopping cart, ${totalItems} items` + : "Open shopping cart"; + document.getElementById("cart-btn")?.setAttribute("aria-label", cartLabel); + + itemsContainer.replaceChildren(); + if (!cart.length) { + const empty = document.createElement("p"); + empty.className = "cart-empty"; + empty.textContent = "Your cart is empty."; + itemsContainer.append(empty); + } else { + cart.forEach((item) => itemsContainer.append(createCartItem(item))); + } + + const subtotal = cart.reduce((sum, item) => sum + getItemPrice(item) * item.quantity, 0); + subtotalNode.textContent = formatCurrency(subtotal); + totalNode.textContent = formatCurrency(subtotal); + document.getElementById("cart-discount-row")?.toggleAttribute("hidden", true); + const checkoutButton = document.getElementById("cart-checkout-btn"); + if (checkoutButton) checkoutButton.disabled = cart.length === 0; +} + +function setupProductActions() { + document.querySelectorAll("[data-add-product]").forEach((button) => { + button.addEventListener("click", () => { + const card = button.closest(".grid-item")?.querySelector(".product-card"); + if (card) addProduct(productFromElement(card), button); + }); + }); + + document.getElementById("buy-btn")?.addEventListener("click", () => { + const product = document.getElementById("product-page-data"); + const button = document.getElementById("buy-btn"); + if (!product) return; + addProduct(productFromElement(product), button); + cartController?.setOpen(true); + }); + + document.getElementById("donate-add-btn")?.addEventListener("click", () => { + const input = document.getElementById("donate-amount"); + const amount = Number.parseFloat(input?.value); + if (!Number.isFinite(amount) || amount < 1) { + input?.focus(); + announce("Enter a donation amount of at least one."); + return; + } + + const baseUsd = userCurrency === "USD" ? amount : userCurrency === "MYR" ? amount / 4.3 : amount / 6; + const product = { + productId: `donate_${Date.now()}`, + coins: 0, + title: `Support PWindows β€” ${formatCurrency(amount)}`, + image: "/assets/PWindows.svg", + stripeId: "donate", + priceUsd: userCurrency === "USD" ? amount : baseUsd, + priceMyr: userCurrency === "MYR" ? amount : baseUsd * 4.3, + priceCny: userCurrency === "CNY" ? amount : baseUsd * 6, + quantity: 1, + isDonation: true, + donationAmount: amount, + }; + addProduct(product, document.getElementById("donate-add-btn")); + input.value = ""; + }); + + document.getElementById("promo-btn")?.addEventListener("click", () => { + const input = document.getElementById("promo-input"); + const message = document.getElementById("promo-msg"); + if (!input?.value.trim() || !message) return; + message.textContent = "Checking code..."; + window.setTimeout(() => { + message.textContent = "Promo codes are coming soon."; + }, 500); + }); +} + +function setupCatalog() { + const search = document.getElementById("shop-search"); + const buttons = Array.from(document.querySelectorAll(".cat-btn")); + const items = Array.from(document.querySelectorAll(".grid-item")); + if (!search || !buttons.length || !items.length) return; + + const params = new URLSearchParams(window.location.search); + let category = buttons.some((button) => button.dataset.cat === params.get("category")) ? params.get("category") : "all"; + search.value = params.get("s") || ""; + + function filter() { + const query = search.value.trim().toLowerCase(); + let visible = 0; + items.forEach((item) => { + const categoryMatch = category === "all" || item.dataset.cat === category; + const queryMatch = item.dataset.title.includes(query) || item.dataset.desc.includes(query); + item.hidden = !(categoryMatch && queryMatch); + if (!item.hidden) visible += 1; + }); + document.getElementById("no-results").hidden = visible !== 0; + } + + function syncUrl() { + const next = new URLSearchParams(); + if (category !== "all") next.set("category", category); + if (search.value.trim()) next.set("s", search.value.trim()); + history.replaceState(null, "", `${window.location.pathname}${next.size ? `?${next}` : ""}`); + } + + buttons.forEach((button) => { + const active = button.dataset.cat === category; + button.classList.toggle("active", active); + button.setAttribute("aria-pressed", String(active)); + button.addEventListener("click", () => { + category = button.dataset.cat; + buttons.forEach((candidate) => { + const selected = candidate === button; + candidate.classList.toggle("active", selected); + candidate.setAttribute("aria-pressed", String(selected)); + }); + syncUrl(); + filter(); + }); + }); + + search.addEventListener("input", () => { + syncUrl(); + filter(); + }); + filter(); +} + +function setupPlayerGate() { + const form = document.getElementById("gate-form"); + const main = document.getElementById("gate-main"); + const success = document.getElementById("gate-success"); + if (!form || !main || !success) return; + + const input = document.getElementById("gate-username"); + const button = document.getElementById("gate-enter-btn"); + const error = document.getElementById("gate-error"); + const hint = document.getElementById("gate-hint"); + + function showVerified(username, uuid) { + main.hidden = true; + success.hidden = false; + document.getElementById("gate-welcome").textContent = `Hey, ${username}!`; + document.getElementById("gate-avatar").style.backgroundImage = `url("https://crafatar.com/avatars/${encodeURIComponent(uuid)}?size=96&overlay")`; + const redirect = new URLSearchParams(window.location.search).get("redirect"); + const link = document.getElementById("gate-shop-link"); + if (link && redirect?.startsWith("/") && !redirect.startsWith("//")) link.href = redirect; + } + + const savedUsername = sessionStorage.getItem("pw_username"); + const savedUuid = sessionStorage.getItem("pw_uuid"); + if (savedUsername && savedUuid) showVerified(savedUsername, savedUuid); + + form.addEventListener("submit", async (event) => { + event.preventDefault(); + const username = input.value.trim(); + error.textContent = ""; + hint.textContent = ""; + + if (!/^[a-zA-Z0-9_]{3,16}$/.test(username)) { + error.textContent = username ? "Enter a valid Minecraft username." : "Please enter your username."; + input.focus(); + return; + } + + button.textContent = "Checking..."; + button.disabled = true; + input.disabled = true; + try { + const response = await fetch(`https://api.pwindows.qzz.io/shop/login?username=${encodeURIComponent(username)}`); + if (!response.ok) throw new Error("Verification request failed"); + const data = await response.json(); + if (!data.exists) { + error.textContent = "You haven’t joined PWindows yet!"; + hint.textContent = "Join at play.pwindows.qzz.io first, then come back."; + return; + } + sessionStorage.setItem("pw_username", data.username); + sessionStorage.setItem("pw_uuid", data.uuid); + showVerified(data.username, data.uuid); + announce(`Welcome, ${data.username}. Player verified.`); + } catch (_) { + error.textContent = "Something went wrong. Please try again."; + } finally { + button.textContent = "Enter Shop"; + button.disabled = false; + input.disabled = false; + } + }); +} + +function setupPlayerSession() { + const pill = document.getElementById("shop-user-pill"); + const productPage = document.getElementById("product-page-data"); + if (!pill && !productPage) return; + + const username = sessionStorage.getItem("pw_username"); + const uuid = sessionStorage.getItem("pw_uuid"); + if (!username || !uuid) { + const redirect = encodeURIComponent(window.location.pathname + window.location.search); + window.location.replace(`/?redirect=${redirect}`); + return; + } + + if (pill) { + pill.hidden = false; + document.getElementById("shop-user-name").textContent = username; + document.getElementById("shop-user-avatar").style.backgroundImage = `url("https://crafatar.com/avatars/${encodeURIComponent(uuid)}?size=34&overlay")`; + document.getElementById("shop-user-switch")?.addEventListener("click", () => { + sessionStorage.removeItem("pw_username"); + sessionStorage.removeItem("pw_uuid"); + window.location.assign("/"); + }); + } +} + +function applyPromoToCart() { + const input = document.getElementById("cart-promo-input"); + const message = document.getElementById("cart-promo-msg"); + const code = input?.value.trim().toUpperCase(); + if (!message) return; + if (!code) { + message.textContent = ""; + return; + } + message.textContent = "Validating..."; + localStorage.setItem(PROMO_STORAGE_KEY, code); + window.setTimeout(() => { + message.textContent = `Promo code β€œ${code}” saved for checkout.`; + announce("Promo code saved for checkout."); + }, 500); +} + +async function checkoutFromCart() { + const cart = getCart(); + const uuid = sessionStorage.getItem("pw_uuid"); + const username = sessionStorage.getItem("pw_username"); + if (!uuid || !username) { + window.location.assign("/?redirect=/products"); + return; + } + if (!cart.length) { + announce("Your cart is empty."); + return; + } + + const button = document.getElementById("cart-checkout-btn"); + button.disabled = true; + button.textContent = "Processing..."; + try { + const response = await fetch("https://your-worker.example.com/create-checkout", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + items: cart.map((item) => ({ + stripe_price_id: item.stripeId, + quantity: item.quantity, + name: item.title, + amount: getItemPrice(item), + currency: userCurrency, + })), + player_uuid: uuid, + username, + promo: localStorage.getItem(PROMO_STORAGE_KEY), + region: userRegion, + }), + }); + if (!response.ok) throw new Error("Checkout failed"); + const session = await response.json(); + if (session.session_url) window.location.assign(session.session_url); + else throw new Error(session.error || "Checkout session was not created"); + } catch (error) { + announce(`Checkout could not start. ${error.message}`); + button.disabled = false; + button.textContent = "Proceed to Checkout"; + } +} + +function setupImageFallbacks() { + document.querySelectorAll("img[data-fallback-src]").forEach((image) => { + image.addEventListener("error", () => { + image.src = image.dataset.fallbackSrc; + }, { once: true }); + }); +} + +document.addEventListener("DOMContentLoaded", async () => { + setupOverlays(); + setupImageFallbacks(); + setupPlayerGate(); + setupPlayerSession(); + setupCatalog(); + setupProductActions(); + document.getElementById("cart-promo-btn")?.addEventListener("click", applyPromoToCart); + document.getElementById("cart-checkout-btn")?.addEventListener("click", checkoutFromCart); + updateCartUI(); + await initRegionalPrices(); +}); diff --git a/assets/js/main.js b/assets/js/main.js deleted file mode 100644 index 4103700..0000000 --- a/assets/js/main.js +++ /dev/null @@ -1,595 +0,0 @@ -// Logo click functionality with bounce animation -function goHome() { - const logo = document.getElementById('logo'); - if (!logo) return; - - logo.style.animation = 'bounce 0.6s ease-in-out'; - - setTimeout(() => { - logo.style.animation = ''; - }, 600); - - // Navigate to index page instead of #home - window.location.href = 'https://shop.pwindows.qzz.io/'; -} - -function goBack() { - const logo = document.getElementById('logo'); - if (!logo) return; - - logo.style.animation = 'bounce 0.6s ease-in-out'; - - setTimeout(() => { - logo.style.animation = ''; - }, 600); - - // Navigate to index page instead of #home - window.location.href = 'https://www.pwindows.qzz.io/'; -} - -// Hamburger Menu Functionality -function toggleMenu() { - const hamburger = document.getElementById('hamburger'); - const mobileMenu = document.getElementById('mobileMenu'); - const body = document.body; - - if (hamburger && mobileMenu) { - hamburger.classList.toggle('active'); - mobileMenu.classList.toggle('active'); - body.classList.toggle('menu-open'); - } -} - -function closeMenu() { - const hamburger = document.getElementById('hamburger'); - const mobileMenu = document.getElementById('mobileMenu'); - const body = document.body; - - if (hamburger && mobileMenu) { - hamburger.classList.remove('active'); - mobileMenu.classList.remove('active'); - body.classList.remove('menu-open'); - } -} - -// Enhanced copy IP functionality -function copyIP() { - const ip = 'Play.PWindows.qzz.io'; - const button = document.querySelector('.server-info'); - if (!button) return; - - navigator.clipboard.writeText(ip).then(function () { - button.classList.add('copied'); - - setTimeout(() => { - button.classList.remove('copied'); - }, 2000); - }).catch(function (err) { - console.error('Failed to copy IP: ', err); - const textArea = document.createElement('textarea'); - textArea.value = ip; - document.body.appendChild(textArea); - textArea.select(); - document.execCommand('copy'); - document.body.removeChild(textArea); - - button.classList.add('copied'); - setTimeout(() => { - button.classList.remove('copied'); - }, 2000); - }); -} - -// Copy server IP from flip card button -function copyServerIP(button) { - const ip = 'Play.PWindows.qzz.io'; - - navigator.clipboard.writeText(ip).then(function () { - button.classList.add('copied'); - - setTimeout(() => { - button.classList.remove('copied'); - }, 2000); - }).catch(function (err) { - console.error('Failed to copy IP: ', err); - const textArea = document.createElement('textarea'); - textArea.value = ip; - document.body.appendChild(textArea); - textArea.select(); - document.execCommand('copy'); - document.body.removeChild(textArea); - - button.classList.add('copied'); - setTimeout(() => { - button.classList.remove('copied'); - }, 2000); - }); -} - -const EUR_REGIONS = new Set([ - 'AT', 'BE', 'CY', 'DE', 'EE', 'ES', 'FI', 'FR', 'GR', 'HR', - 'IE', 'IT', 'LT', 'LU', 'LV', 'MT', 'NL', 'PT', 'SI', 'SK' -]); - -let usdRatesPromise = null; - -let locationPromise = null; - -function getLocationFromIP() { - if (!locationPromise) { - locationPromise = fetch('https://ipapi.co/json/') - .then(res => res.ok ? res.json() : null) - .then(data => { - if (data && data.country_code) { - console.log('IP Geolocation country:', data.country_code); - return data.country_code.toUpperCase(); - } - return null; - }) - .catch(err => { - console.error('Geolocation API error:', err); - return null; - }); - } - return locationPromise; -} - -function detectRegion() { - // This will be overridden by IP geolocation - // Fallback to browser language only if geolocation fails - const browserLang = navigator.language || navigator.userLanguage || ''; - const allLangs = [browserLang, ...(navigator.languages || [])].filter(Boolean); - - for (const locale of allLangs) { - try { - if (typeof Intl.Locale === 'function') { - const intlLocale = new Intl.Locale(locale); - const region = intlLocale.region; - if (region) return region.toUpperCase(); - } - } catch (e) {} - - const match = locale.match(/[-_]([A-Z]{2})/i); - if (match) return match[1].toUpperCase(); - } - - return 'US'; -} - -function currencyByRegion(region) { - if (region === 'MY') return 'MYR'; - if (region === 'CN') return 'CNY'; - return 'USD'; -} - -function formatCurrency(amount, currency) { - const noDecimalCurrencies = new Set(['JPY', 'KRW']); - const digits = noDecimalCurrencies.has(currency) ? 0 : 2; - - try { - return new Intl.NumberFormat(undefined, { - style: 'currency', - currency, - minimumFractionDigits: digits, - maximumFractionDigits: digits - }).format(amount); - } catch (_) { - return `$${Number(amount).toFixed(2)}`; - } -} - -function getUsdRates() { - if (!usdRatesPromise) { - usdRatesPromise = fetch('https://open.er-api.com/v6/latest/USD') - .then(res => res.ok ? res.json() : null) - .catch(() => null); - } - return usdRatesPromise; -} - -async function initRegionalPrices() { - const priceNodes = document.querySelectorAll('.js-regional-price'); - console.log('Found price nodes:', priceNodes.length); - - if (!priceNodes.length) return; - - // Get region from IP geolocation first, fallback to browser language - let region = await getLocationFromIP(); - if (!region) { - region = detectRegion(); - console.log('IP geolocation failed, using browser language fallback:', region); - } else { - console.log('Using IP geolocation region:', region); - } - - const usePresetMyr = region === 'MY'; - const usePresetCny = region === 'CN'; - - console.log('Detected region:', region); - console.log('Use MYR?', usePresetMyr); - console.log('Use CNY?', usePresetCny); - - // Store region for cart calculations - window.userRegion = region; - window.userCurrency = currencyByRegion(region); - - console.log('User currency:', window.userCurrency); - - priceNodes.forEach((node, idx) => { - const usd = parseFloat(node.dataset.priceUsd); - const myr = parseFloat(node.dataset.priceMyr); - const cny = parseFloat(node.dataset.priceCny); - - console.log(`Node ${idx}: USD=${usd}, MYR=${myr}, CNY=${cny}`); - - let amount = usd; - let currency = 'USD'; - - if (usePresetMyr && Number.isFinite(myr)) { - amount = myr; - currency = 'MYR'; - } else if (usePresetCny && Number.isFinite(cny)) { - amount = cny; - currency = 'CNY'; - } - - if (Number.isFinite(amount)) { - const formatted = formatCurrency(amount, currency); - console.log(`Setting node ${idx} to: ${formatted}`); - node.textContent = formatted; - } - }); -} - -// Shopping Cart Management -const CART_STORAGE_KEY = 'pwindows_cart'; -const PROMO_STORAGE_KEY = 'pwindows_promo'; - -function getCart() { - const cart = localStorage.getItem(CART_STORAGE_KEY); - return cart ? JSON.parse(cart) : []; -} - -function saveCart(cart) { - localStorage.setItem(CART_STORAGE_KEY, JSON.stringify(cart)); - updateCartUI(); -} - -function addToCart(btnElement) { - // Find the product card from the button's parent grid-item - const gridItem = btnElement.closest('.grid-item'); - if (!gridItem) { - console.error('Could not find grid-item'); - return; - } - - const productElement = gridItem.querySelector('.product-card'); - if (!productElement) { - console.error('Could not find product-card'); - return; - } - - const productId = productElement.dataset.productId; - const coins = parseInt(productElement.dataset.coins) || 0; - const title = productElement.dataset.title || 'Unknown'; - const image = productElement.dataset.image || '/assets/img/products/placeholder.png'; - const stripeId = productElement.dataset.stripeId || ''; - const priceUsd = parseFloat(productElement.dataset.priceUsd) || 0; - const priceMyr = parseFloat(productElement.dataset.priceMyr) || 0; - const priceCny = parseFloat(productElement.dataset.priceCny) || 0; - - const cart = getCart(); - - // Check if product already in cart - const existing = cart.find(item => item.productId === productId); - if (existing) { - existing.quantity += 1; - } else { - cart.push({ - productId, - coins, - title, - image, - stripeId, - priceUsd, - priceMyr, - priceCny, - quantity: 1 - }); - } - - saveCart(cart); - - // Show feedback - const original = btnElement.textContent; - btnElement.textContent = 'Added! βœ“'; - setTimeout(() => { btnElement.textContent = original; }, 2000); -} - -function removeFromCart(productId) { - let cart = getCart(); - cart = cart.filter(item => item.productId !== productId); - saveCart(cart); -} - -function updateCartItemQuantity(productId, quantity) { - let cart = getCart(); - const item = cart.find(item => item.productId === productId); - if (item) { - if (quantity <= 0) { - removeFromCart(productId); - } else { - item.quantity = quantity; - saveCart(cart); - } - } -} - -function getPrice(item) { - if (window.userRegion === 'MY') return item.priceMyr; - if (window.userRegion === 'CN') return item.priceCny; - return item.priceUsd; -} - -function updateCartUI() { - const cart = getCart(); - const cartCount = document.getElementById('cart-count'); - const cartItemsDiv = document.getElementById('cart-items'); - const cartSubtotal = document.getElementById('cart-subtotal'); - const cartTotal = document.getElementById('cart-total'); - - // Update count - const totalItems = cart.reduce((sum, item) => sum + item.quantity, 0); - if (totalItems > 0) { - cartCount.textContent = totalItems; - cartCount.style.display = 'flex'; - } else { - cartCount.style.display = 'none'; - } - - // Update items display - if (cart.length === 0) { - cartItemsDiv.innerHTML = '

Your cart is empty

'; - } else { - cartItemsDiv.innerHTML = cart.map(item => ` -
- ${item.title} -
-

${item.title}

-

${item.coins} PCoins

-

${formatCurrency(getPrice(item), window.userCurrency || 'USD')}

-
-
- - ${item.quantity} - - -
-
- `).join(''); - } - - // Update totals - const subtotal = cart.reduce((sum, item) => sum + (getPrice(item) * item.quantity), 0); - const promoCode = localStorage.getItem(PROMO_STORAGE_KEY); - let discount = 0; - let discountPercent = 0; - - // TODO: Get discount from Stripe or your backend - // For now, store the promo code to send to Stripe later - if (promoCode) { - // You'll validate this when creating the Stripe session - } - - const total = subtotal - discount; - cartSubtotal.textContent = formatCurrency(subtotal, window.userCurrency || 'USD'); - cartTotal.textContent = formatCurrency(total, window.userCurrency || 'USD'); - - if (discount > 0) { - document.getElementById('cart-discount-row').style.display = 'flex'; - document.getElementById('cart-discount').textContent = formatCurrency(discount, window.userCurrency || 'USD'); - } else { - document.getElementById('cart-discount-row').style.display = 'none'; - } -} - -function toggleCart() { - const sidebar = document.getElementById('cart-sidebar'); - const overlay = document.getElementById('cart-overlay'); - const isOpen = sidebar.classList.contains('open'); - - if (isOpen) { - sidebar.classList.remove('open'); - overlay.classList.remove('open'); - } else { - sidebar.classList.add('open'); - overlay.classList.add('open'); - updateCartUI(); - } -} - -function applyPromoToCart() { - const input = document.getElementById('cart-promo-input'); - const msg = document.getElementById('cart-promo-msg'); - const code = input.value.trim().toUpperCase(); - - if (!code) { - msg.textContent = ''; - return; - } - - msg.style.color = '#888'; - msg.textContent = 'Validating...'; - - // TODO: Validate promo code via Stripe API or your backend - // For now, just store it to send to Stripe during checkout - localStorage.setItem(PROMO_STORAGE_KEY, code); - - setTimeout(() => { - msg.style.color = '#27ae60'; - msg.textContent = `Promo code "${code}" applied!`; - updateCartUI(); - }, 600); -} - -async function checkoutFromCart() { - const cart = getCart(); - const uuid = sessionStorage.getItem('pw_uuid'); - const username = sessionStorage.getItem('pw_username'); - - if (!uuid || !username) { - window.location.href = '/?redirect=/products'; - return; - } - - if (cart.length === 0) { - alert('Your cart is empty!'); - return; - } - - const btn = document.getElementById('cart-checkout-btn'); - btn.disabled = true; - btn.textContent = 'Processing...'; - - try { - const promoCode = localStorage.getItem(PROMO_STORAGE_KEY); - const region = window.userRegion || 'US'; - - // Prepare cart data for Stripe - const checkoutData = { - items: cart.map(item => ({ - stripe_price_id: item.stripeId, - quantity: item.quantity, - name: item.title, - amount: getPrice(item), - currency: window.userCurrency - })), - player_uuid: uuid, - username: username, - promo: promoCode, - region: region - }; - - console.log('Sending to checkout:', checkoutData); - - // TODO: Replace with your actual Cloudflare Worker URL - const response = await fetch('https://your-worker.example.com/create-checkout', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify(checkoutData) - }); - - if (!response.ok) { - throw new Error('Checkout failed'); - } - - const session = await response.json(); - - if (session.session_url) { - // Redirect to Stripe checkout - window.location.href = session.session_url; - } else if (session.error) { - alert('Error: ' + session.error); - } - } catch (e) { - console.error('Checkout error:', e); - alert('Checkout error. Please try again.\n\nError: ' + e.message); - btn.disabled = false; - btn.textContent = 'Proceed to Checkout'; - } -} - -// Initialize everything when DOM is ready -document.addEventListener('DOMContentLoaded', function() { - // Initialize regional pricing - initRegionalPrices(); - - // Initialize cart UI - updateCartUI(); - - // Setup hamburger menu - const hamburger = document.getElementById('hamburger'); - const mobileMenu = document.getElementById('mobileMenu'); - - if (hamburger) { - hamburger.addEventListener('click', toggleMenu); - } - - // Close menu when clicking outside - if (mobileMenu) { - mobileMenu.addEventListener('click', function (e) { - if (e.target === mobileMenu) { - closeMenu(); - } - }); - } - - // Close menu on escape key - document.addEventListener('keydown', function (e) { - if (e.key === 'Escape') { - if (mobileMenu && mobileMenu.classList.contains('active')) { - closeMenu(); - } - const cartSidebar = document.getElementById('cart-sidebar'); - if (cartSidebar && cartSidebar.classList.contains('open')) { - toggleCart(); - } - } - }); - - // Handle window resize - window.addEventListener('resize', function () { - if (window.innerWidth > 768 && mobileMenu && mobileMenu.classList.contains('active')) { - closeMenu(); - } - }); - - // Enhanced smooth scrolling for anchor links - document.querySelectorAll('a[href^="#"]').forEach(anchor => { - anchor.addEventListener('click', function (e) { - e.preventDefault(); - const target = document.querySelector(this.getAttribute('href')); - if (target) { - target.scrollIntoView({ - behavior: 'smooth', - block: 'start' - }); - } - }); - }); - - // Hero card hover effects (optimized with transform only) - const heroCard = document.querySelector('.hero-card'); - if (heroCard) { - heroCard.addEventListener('mouseenter', function () { - this.style.transform = 'translateY(-5px)'; - }); - - heroCard.addEventListener('mouseleave', function () { - this.style.transform = 'translateY(0)'; - }); - } - - // Scroll animations (optimized with IntersectionObserver) - const observer = new IntersectionObserver((entries) => { - entries.forEach(entry => { - if (entry.isIntersecting) { - entry.target.style.opacity = '1'; - entry.target.style.transform = 'translateY(0)'; - observer.unobserve(entry.target); // Stop observing once animated - } - }); - }, { - threshold: 0.1, - rootMargin: '50px' - }); - - document.querySelectorAll('.hero-card, .server-info, .launch-btn').forEach(el => { - el.style.opacity = '0'; - el.style.transform = 'translateY(20px)'; - el.style.transition = 'opacity 0.6s ease-out, transform 0.6s ease-out'; - observer.observe(el); - }); -}); diff --git a/assets/manifest.json b/assets/manifest.json new file mode 100644 index 0000000..9225a56 --- /dev/null +++ b/assets/manifest.json @@ -0,0 +1,23 @@ +--- +--- +{ + "name": "PWindows Shop", + "short_name": "PWindows Shop", + "start_url": "{{ '/' | relative_url }}", + "scope": "{{ '/' | relative_url }}", + "icons": [ + { + "src": "{{ '/assets/icons/site/android-chrome-192x192.png' | relative_url }}", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "{{ '/assets/icons/site/android-chrome-512x512.png' | relative_url }}", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/assets/mojang/fonts/LICENSE_OFL.txt b/assets/mojang/fonts/LICENSE_OFL.txt deleted file mode 100644 index d952d62..0000000 --- a/assets/mojang/fonts/LICENSE_OFL.txt +++ /dev/null @@ -1,92 +0,0 @@ -This Font Software is licensed under the SIL Open Font License, -Version 1.1. - -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font -creation efforts of academic and linguistic communities, and to -provide a free and open framework in which fonts may be shared and -improved in partnership with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply to -any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software -components as distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, -deleting, or substituting -- in part or in whole -- any of the -components of the Original Version, by changing formats or by porting -the Font Software to a new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, -modify, redistribute, and sell modified and unmodified copies of the -Font Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, in -Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the -corresponding Copyright Holder. This restriction only applies to the -primary font name as presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created using -the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/assets/mojang/fonts/Minecraft-Seven_v2.otf b/assets/mojang/fonts/Minecraft-Seven_v2.otf deleted file mode 100644 index 490e2ca..0000000 Binary files a/assets/mojang/fonts/Minecraft-Seven_v2.otf and /dev/null differ diff --git a/assets/mojang/fonts/Minecraft-Seven_v2.ttf b/assets/mojang/fonts/Minecraft-Seven_v2.ttf deleted file mode 100644 index 87cc81b..0000000 Binary files a/assets/mojang/fonts/Minecraft-Seven_v2.ttf and /dev/null differ diff --git a/assets/mojang/fonts/Minecraft-Seven_v2.woff b/assets/mojang/fonts/Minecraft-Seven_v2.woff deleted file mode 100644 index 57fb50d..0000000 Binary files a/assets/mojang/fonts/Minecraft-Seven_v2.woff and /dev/null differ diff --git a/assets/mojang/fonts/Minecraft-Tenv2.eot b/assets/mojang/fonts/Minecraft-Tenv2.eot deleted file mode 100644 index 4bed47c..0000000 Binary files a/assets/mojang/fonts/Minecraft-Tenv2.eot and /dev/null differ diff --git a/assets/mojang/fonts/Minecraft-Tenv2.ttf b/assets/mojang/fonts/Minecraft-Tenv2.ttf deleted file mode 100644 index 22fddfb..0000000 Binary files a/assets/mojang/fonts/Minecraft-Tenv2.ttf and /dev/null differ diff --git a/assets/mojang/fonts/Minecraft-Tenv2.woff b/assets/mojang/fonts/Minecraft-Tenv2.woff deleted file mode 100644 index 312aebd..0000000 Binary files a/assets/mojang/fonts/Minecraft-Tenv2.woff and /dev/null differ diff --git a/assets/mojang/fonts/Minecraft-Tenv2.woff2 b/assets/mojang/fonts/Minecraft-Tenv2.woff2 deleted file mode 100644 index 8976219..0000000 Binary files a/assets/mojang/fonts/Minecraft-Tenv2.woff2 and /dev/null differ diff --git a/assets/mojang/fonts/MinecraftFive-Bold.css b/assets/mojang/fonts/MinecraftFive-Bold.css deleted file mode 100644 index 53210d7..0000000 --- a/assets/mojang/fonts/MinecraftFive-Bold.css +++ /dev/null @@ -1,12 +0,0 @@ -/* Webfont: MinecraftFive-Bold */@font-face { - font-family: 'MinecraftFive'; - src: url('MinecraftFive-Bold.eot'); /* IE9 Compat Modes */ - src: url('MinecraftFive-Bold.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('MinecraftFive-Bold.woff') format('woff'), /* Modern Browsers */ - url('MinecraftFive-Bold.ttf') format('truetype'), /* Safari, Android, iOS */ - url('MinecraftFive-Bold.svg#MinecraftFive-Bold') format('svg'); /* Legacy iOS */ - font-style: normal; - font-weight: bold; - text-rendering: optimizeLegibility; -} - diff --git a/assets/mojang/fonts/MinecraftFive-Bold.eot b/assets/mojang/fonts/MinecraftFive-Bold.eot deleted file mode 100644 index 0f2d547..0000000 Binary files a/assets/mojang/fonts/MinecraftFive-Bold.eot and /dev/null differ diff --git a/assets/mojang/fonts/MinecraftFive-Bold.html b/assets/mojang/fonts/MinecraftFive-Bold.html deleted file mode 100644 index 000c239..0000000 --- a/assets/mojang/fonts/MinecraftFive-Bold.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - -Minecraft Five Bold - Web Font Specimen - - - - -

The quick brown fox jumps over the lazy dog. $123.45!

- - diff --git a/assets/mojang/fonts/MinecraftFive-Bold.svg b/assets/mojang/fonts/MinecraftFive-Bold.svg deleted file mode 100644 index 9cb862b..0000000 --- a/assets/mojang/fonts/MinecraftFive-Bold.svg +++ /dev/null @@ -1,617 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/assets/mojang/fonts/MinecraftFive-Bold.ttf b/assets/mojang/fonts/MinecraftFive-Bold.ttf deleted file mode 100644 index 428179c..0000000 Binary files a/assets/mojang/fonts/MinecraftFive-Bold.ttf and /dev/null differ diff --git a/assets/mojang/fonts/MinecraftFive-Bold.woff b/assets/mojang/fonts/MinecraftFive-Bold.woff deleted file mode 100644 index 3e79092..0000000 Binary files a/assets/mojang/fonts/MinecraftFive-Bold.woff and /dev/null differ diff --git a/assets/mojang/fonts/MinecraftFive-Regular.css b/assets/mojang/fonts/MinecraftFive-Regular.css deleted file mode 100644 index 7c4820b..0000000 --- a/assets/mojang/fonts/MinecraftFive-Regular.css +++ /dev/null @@ -1,12 +0,0 @@ -/* Webfont: MinecraftFive-Regular */@font-face { - font-family: 'MinecraftFive'; - src: url('MinecraftFive-Regular.eot'); /* IE9 Compat Modes */ - src: url('MinecraftFive-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('MinecraftFive-Regular.woff') format('woff'), /* Modern Browsers */ - url('MinecraftFive-Regular.ttf') format('truetype'), /* Safari, Android, iOS */ - url('MinecraftFive-Regular.svg#MinecraftFive-Regular') format('svg'); /* Legacy iOS */ - font-style: normal; - font-weight: normal; - text-rendering: optimizeLegibility; -} - diff --git a/assets/mojang/fonts/MinecraftFive-Regular.eot b/assets/mojang/fonts/MinecraftFive-Regular.eot deleted file mode 100644 index 92b1d17..0000000 Binary files a/assets/mojang/fonts/MinecraftFive-Regular.eot and /dev/null differ diff --git a/assets/mojang/fonts/MinecraftFive-Regular.html b/assets/mojang/fonts/MinecraftFive-Regular.html deleted file mode 100644 index 109ea05..0000000 --- a/assets/mojang/fonts/MinecraftFive-Regular.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - -Minecraft Five Regular - Web Font Specimen - - - - -

The quick brown fox jumps over the lazy dog. $123.45!

- - diff --git a/assets/mojang/fonts/MinecraftFive-Regular.svg b/assets/mojang/fonts/MinecraftFive-Regular.svg deleted file mode 100644 index 2dd6b69..0000000 --- a/assets/mojang/fonts/MinecraftFive-Regular.svg +++ /dev/null @@ -1,617 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/assets/mojang/fonts/MinecraftFive-Regular.ttf b/assets/mojang/fonts/MinecraftFive-Regular.ttf deleted file mode 100644 index 80f3b53..0000000 Binary files a/assets/mojang/fonts/MinecraftFive-Regular.ttf and /dev/null differ diff --git a/assets/mojang/fonts/MinecraftFive-Regular.woff b/assets/mojang/fonts/MinecraftFive-Regular.woff deleted file mode 100644 index c82df34..0000000 Binary files a/assets/mojang/fonts/MinecraftFive-Regular.woff and /dev/null differ diff --git a/assets/mojang/fonts/MinecraftFive-Regular.woff2 b/assets/mojang/fonts/MinecraftFive-Regular.woff2 deleted file mode 100644 index 6e2d356..0000000 Binary files a/assets/mojang/fonts/MinecraftFive-Regular.woff2 and /dev/null differ diff --git a/assets/mojang/fonts/MinecraftSeven.css b/assets/mojang/fonts/MinecraftSeven.css deleted file mode 100644 index f9ab634..0000000 --- a/assets/mojang/fonts/MinecraftSeven.css +++ /dev/null @@ -1,12 +0,0 @@ -/* Webfont: MinecraftSeven */@font-face { - font-family: 'MinecraftSeven'; - src: url('MinecraftSeven.eot'); /* IE9 Compat Modes */ - src: url('MinecraftSeven.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('MinecraftSeven.woff') format('woff'), /* Modern Browsers */ - url('MinecraftSeven.ttf') format('truetype'), /* Safari, Android, iOS */ - url('MinecraftSeven.svg#MinecraftSeven') format('svg'); /* Legacy iOS */ - font-style: normal; - font-weight: normal; - text-rendering: optimizeLegibility; -} - diff --git a/assets/mojang/fonts/MinecraftSeven.eot b/assets/mojang/fonts/MinecraftSeven.eot deleted file mode 100644 index 0c968a6..0000000 Binary files a/assets/mojang/fonts/MinecraftSeven.eot and /dev/null differ diff --git a/assets/mojang/fonts/MinecraftSeven.html b/assets/mojang/fonts/MinecraftSeven.html deleted file mode 100644 index 8702dd1..0000000 --- a/assets/mojang/fonts/MinecraftSeven.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - -Minecraft Seven - Web Font Specimen - - - - -

The quick brown fox jumps over the lazy dog. $123.45!

- - diff --git a/assets/mojang/fonts/MinecraftSeven.svg b/assets/mojang/fonts/MinecraftSeven.svg deleted file mode 100644 index f5eb735..0000000 --- a/assets/mojang/fonts/MinecraftSeven.svg +++ /dev/null @@ -1,620 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/assets/mojang/fonts/MinecraftSeven.ttf b/assets/mojang/fonts/MinecraftSeven.ttf deleted file mode 100644 index 0b738f7..0000000 Binary files a/assets/mojang/fonts/MinecraftSeven.ttf and /dev/null differ diff --git a/assets/mojang/fonts/MinecraftSeven.woff b/assets/mojang/fonts/MinecraftSeven.woff deleted file mode 100644 index c52c643..0000000 Binary files a/assets/mojang/fonts/MinecraftSeven.woff and /dev/null differ diff --git a/assets/mojang/fonts/MinecraftTen.css b/assets/mojang/fonts/MinecraftTen.css deleted file mode 100644 index d1aa35e..0000000 --- a/assets/mojang/fonts/MinecraftTen.css +++ /dev/null @@ -1,12 +0,0 @@ -/* Webfont: MinecraftTen */@font-face { - font-family: 'MinecraftTen'; - src: url('MinecraftTen.eot'); /* IE9 Compat Modes */ - src: url('MinecraftTen.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('MinecraftTen.woff') format('woff'), /* Modern Browsers */ - url('MinecraftTen.ttf') format('truetype'), /* Safari, Android, iOS */ - url('MinecraftTen.svg#MinecraftTen') format('svg'); /* Legacy iOS */ - font-style: normal; - font-weight: normal; - text-rendering: optimizeLegibility; -} - diff --git a/assets/mojang/fonts/MinecraftTen.eot b/assets/mojang/fonts/MinecraftTen.eot deleted file mode 100644 index 72bba8b..0000000 Binary files a/assets/mojang/fonts/MinecraftTen.eot and /dev/null differ diff --git a/assets/mojang/fonts/MinecraftTen.html b/assets/mojang/fonts/MinecraftTen.html deleted file mode 100644 index 9d17530..0000000 --- a/assets/mojang/fonts/MinecraftTen.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - -Minecraft Ten - Web Font Specimen - - - - -

The quick brown fox jumps over the lazy dog. $123.45!

- - diff --git a/assets/mojang/fonts/MinecraftTen.svg b/assets/mojang/fonts/MinecraftTen.svg deleted file mode 100644 index 18ca554..0000000 --- a/assets/mojang/fonts/MinecraftTen.svg +++ /dev/null @@ -1,603 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/assets/mojang/fonts/MinecraftTen.ttf b/assets/mojang/fonts/MinecraftTen.ttf deleted file mode 100644 index 28444b4..0000000 Binary files a/assets/mojang/fonts/MinecraftTen.ttf and /dev/null differ diff --git a/assets/mojang/fonts/MinecraftTen.woff b/assets/mojang/fonts/MinecraftTen.woff deleted file mode 100644 index 8d69a58..0000000 Binary files a/assets/mojang/fonts/MinecraftTen.woff and /dev/null differ diff --git a/assets/mojang/fonts/NotoSans-Bold.css b/assets/mojang/fonts/NotoSans-Bold.css deleted file mode 100644 index 0889b85..0000000 --- a/assets/mojang/fonts/NotoSans-Bold.css +++ /dev/null @@ -1,13 +0,0 @@ -/* Webfont: NotoSans-Bold */@font-face { - font-family: 'Noto Sans'; - src: url('NotoSans-Bold.eot'); /* IE9 Compat Modes */ - src: local('Noto Sans Bold'), local('NotoSans-Bold'), /* locally installed */ - url('NotoSans-Bold.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('NotoSans-Bold.woff2') format('woff2'), /* Modern Browsers */ - url('NotoSans-Bold.woff') format('woff'), /* IE9-IE11 */ - url('NotoSans-Bold.ttf') format('truetype'), /* Safari, Android, iOS */ - url('NotoSans-Bold.svg#NotoSans-Bold') format('svg'); /* Legacy iOS */ - font-style: normal; - font-weight: bold; - text-rendering: optimizeLegibility; -} diff --git a/assets/mojang/fonts/NotoSans-Bold.eot b/assets/mojang/fonts/NotoSans-Bold.eot deleted file mode 100644 index e298e59..0000000 Binary files a/assets/mojang/fonts/NotoSans-Bold.eot and /dev/null differ diff --git a/assets/mojang/fonts/NotoSans-Bold.html b/assets/mojang/fonts/NotoSans-Bold.html deleted file mode 100644 index aef9eeb..0000000 --- a/assets/mojang/fonts/NotoSans-Bold.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - -Noto Sans Bold - Web Font Specimen - - - - -

The quick brown fox jumps over the lazy dog. $123.45!

- - diff --git a/assets/mojang/fonts/NotoSans-Bold.ttf b/assets/mojang/fonts/NotoSans-Bold.ttf deleted file mode 100644 index ab11d31..0000000 Binary files a/assets/mojang/fonts/NotoSans-Bold.ttf and /dev/null differ diff --git a/assets/mojang/fonts/NotoSans-Bold.woff b/assets/mojang/fonts/NotoSans-Bold.woff deleted file mode 100644 index 679d1f8..0000000 Binary files a/assets/mojang/fonts/NotoSans-Bold.woff and /dev/null differ diff --git a/assets/mojang/fonts/NotoSans-Bold.woff2 b/assets/mojang/fonts/NotoSans-Bold.woff2 deleted file mode 100644 index deb4fba..0000000 Binary files a/assets/mojang/fonts/NotoSans-Bold.woff2 and /dev/null differ diff --git a/assets/mojang/fonts/NotoSans-BoldItalic.css b/assets/mojang/fonts/NotoSans-BoldItalic.css deleted file mode 100644 index 881ffa0..0000000 --- a/assets/mojang/fonts/NotoSans-BoldItalic.css +++ /dev/null @@ -1,13 +0,0 @@ -/* Webfont: NotoSans-BoldItalic */@font-face { - font-family: 'Noto Sans'; - src: url('NotoSans-BoldItalic.eot'); /* IE9 Compat Modes */ - src: local('Noto Sans Bold Italic'), local('NotoSans-BoldItalic'), /* locally installed */ - url('NotoSans-BoldItalic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('NotoSans-BoldItalic.woff2') format('woff2'), /* Modern Browsers */ - url('NotoSans-BoldItalic.woff') format('woff'), /* IE9-IE11 */ - url('NotoSans-BoldItalic.ttf') format('truetype'), /* Safari, Android, iOS */ - url('NotoSans-BoldItalic.svg#NotoSans-BoldItalic') format('svg'); /* Legacy iOS */ - font-style: italic; - font-weight: bold; - text-rendering: optimizeLegibility; -} diff --git a/assets/mojang/fonts/NotoSans-BoldItalic.eot b/assets/mojang/fonts/NotoSans-BoldItalic.eot deleted file mode 100644 index 2d548d3..0000000 Binary files a/assets/mojang/fonts/NotoSans-BoldItalic.eot and /dev/null differ diff --git a/assets/mojang/fonts/NotoSans-BoldItalic.html b/assets/mojang/fonts/NotoSans-BoldItalic.html deleted file mode 100644 index 00d0392..0000000 --- a/assets/mojang/fonts/NotoSans-BoldItalic.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - -Noto Sans Bold Italic - Web Font Specimen - - - - -

The quick brown fox jumps over the lazy dog. $123.45!

- - diff --git a/assets/mojang/fonts/NotoSans-BoldItalic.ttf b/assets/mojang/fonts/NotoSans-BoldItalic.ttf deleted file mode 100644 index 6dfd1e6..0000000 Binary files a/assets/mojang/fonts/NotoSans-BoldItalic.ttf and /dev/null differ diff --git a/assets/mojang/fonts/NotoSans-BoldItalic.woff b/assets/mojang/fonts/NotoSans-BoldItalic.woff deleted file mode 100644 index bbf3cba..0000000 Binary files a/assets/mojang/fonts/NotoSans-BoldItalic.woff and /dev/null differ diff --git a/assets/mojang/fonts/NotoSans-BoldItalic.woff2 b/assets/mojang/fonts/NotoSans-BoldItalic.woff2 deleted file mode 100644 index e587c7b..0000000 Binary files a/assets/mojang/fonts/NotoSans-BoldItalic.woff2 and /dev/null differ diff --git a/assets/mojang/fonts/NotoSans-Italic.css b/assets/mojang/fonts/NotoSans-Italic.css deleted file mode 100644 index 66ac448..0000000 --- a/assets/mojang/fonts/NotoSans-Italic.css +++ /dev/null @@ -1,13 +0,0 @@ -/* Webfont: NotoSans-Italic */@font-face { - font-family: 'Noto Sans'; - src: url('NotoSans-Italic.eot'); /* IE9 Compat Modes */ - src: local('Noto Sans Italic'), local('NotoSans-Italic'), /* locally installed */ - url('NotoSans-Italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('NotoSans-Italic.woff2') format('woff2'), /* Modern Browsers */ - url('NotoSans-Italic.woff') format('woff'), /* IE9-IE11 */ - url('NotoSans-Italic.ttf') format('truetype'), /* Safari, Android, iOS */ - url('NotoSans-Italic.svg#NotoSans-Italic') format('svg'); /* Legacy iOS */ - font-style: italic; - font-weight: normal; - text-rendering: optimizeLegibility; -} diff --git a/assets/mojang/fonts/NotoSans-Italic.eot b/assets/mojang/fonts/NotoSans-Italic.eot deleted file mode 100644 index 83bc199..0000000 Binary files a/assets/mojang/fonts/NotoSans-Italic.eot and /dev/null differ diff --git a/assets/mojang/fonts/NotoSans-Italic.html b/assets/mojang/fonts/NotoSans-Italic.html deleted file mode 100644 index 5f1e712..0000000 --- a/assets/mojang/fonts/NotoSans-Italic.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - -Noto Sans Italic - Web Font Specimen - - - - -

The quick brown fox jumps over the lazy dog. $123.45!

- - diff --git a/assets/mojang/fonts/NotoSans-Italic.ttf b/assets/mojang/fonts/NotoSans-Italic.ttf deleted file mode 100644 index 1639ad7..0000000 Binary files a/assets/mojang/fonts/NotoSans-Italic.ttf and /dev/null differ diff --git a/assets/mojang/fonts/NotoSans-Italic.woff b/assets/mojang/fonts/NotoSans-Italic.woff deleted file mode 100644 index 4a1414d..0000000 Binary files a/assets/mojang/fonts/NotoSans-Italic.woff and /dev/null differ diff --git a/assets/mojang/fonts/NotoSans-Italic.woff2 b/assets/mojang/fonts/NotoSans-Italic.woff2 deleted file mode 100644 index 3d821fc..0000000 Binary files a/assets/mojang/fonts/NotoSans-Italic.woff2 and /dev/null differ diff --git a/assets/mojang/fonts/NotoSans-Regular.css b/assets/mojang/fonts/NotoSans-Regular.css deleted file mode 100644 index 77c19d6..0000000 --- a/assets/mojang/fonts/NotoSans-Regular.css +++ /dev/null @@ -1,13 +0,0 @@ -/* Webfont: NotoSans-Regular */@font-face { - font-family: 'Noto Sans'; - src: url('NotoSans-Regular.eot'); /* IE9 Compat Modes */ - src: local('Noto Sans'), local('NotoSans'), /* locally installed */ - url('NotoSans-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('NotoSans-Regular.woff2') format('woff2'), /* Modern Browsers */ - url('NotoSans-Regular.woff') format('woff'), /* IE9-IE11 */ - url('NotoSans-Regular.ttf') format('truetype'), /* Safari, Android, iOS */ - url('NotoSans-Regular.svg#NotoSans-Regular') format('svg'); /* Legacy iOS */ - font-style: normal; - font-weight: normal; - text-rendering: optimizeLegibility; -} diff --git a/assets/mojang/fonts/NotoSans-Regular.eot b/assets/mojang/fonts/NotoSans-Regular.eot deleted file mode 100644 index 6505dd1..0000000 Binary files a/assets/mojang/fonts/NotoSans-Regular.eot and /dev/null differ diff --git a/assets/mojang/fonts/NotoSans-Regular.html b/assets/mojang/fonts/NotoSans-Regular.html deleted file mode 100644 index 608f001..0000000 --- a/assets/mojang/fonts/NotoSans-Regular.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - -Noto Sans - Web Font Specimen - - - - -

The quick brown fox jumps over the lazy dog. $123.45!

- - diff --git a/assets/mojang/fonts/NotoSans-Regular.ttf b/assets/mojang/fonts/NotoSans-Regular.ttf deleted file mode 100644 index a1b8994..0000000 Binary files a/assets/mojang/fonts/NotoSans-Regular.ttf and /dev/null differ diff --git a/assets/mojang/fonts/NotoSans-Regular.woff b/assets/mojang/fonts/NotoSans-Regular.woff deleted file mode 100644 index 1aff4d9..0000000 Binary files a/assets/mojang/fonts/NotoSans-Regular.woff and /dev/null differ diff --git a/assets/mojang/fonts/NotoSans-Regular.woff2 b/assets/mojang/fonts/NotoSans-Regular.woff2 deleted file mode 100644 index f5a9303..0000000 Binary files a/assets/mojang/fonts/NotoSans-Regular.woff2 and /dev/null differ diff --git a/assets/mojang/img/bg-current.png b/assets/mojang/img/bg-current.png deleted file mode 100644 index 451b9cf..0000000 Binary files a/assets/mojang/img/bg-current.png and /dev/null differ diff --git a/assets/mojang/img/bg-grass.png b/assets/mojang/img/bg-grass.png deleted file mode 100644 index 451b9cf..0000000 Binary files a/assets/mojang/img/bg-grass.png and /dev/null differ diff --git a/assets/mojang/img/bg-snow.png b/assets/mojang/img/bg-snow.png deleted file mode 100644 index 391589d..0000000 Binary files a/assets/mojang/img/bg-snow.png and /dev/null differ diff --git a/assets/mojang/img/bg-wool-dark-white.png b/assets/mojang/img/bg-wool-dark-white.png deleted file mode 100644 index a6ffaa5..0000000 Binary files a/assets/mojang/img/bg-wool-dark-white.png and /dev/null differ diff --git a/assets/mojang/img/bg-wool-dark.png b/assets/mojang/img/bg-wool-dark.png deleted file mode 100644 index 764d80d..0000000 Binary files a/assets/mojang/img/bg-wool-dark.png and /dev/null differ diff --git a/assets/mojang/img/bg-wool-white-dark.png b/assets/mojang/img/bg-wool-white-dark.png deleted file mode 100644 index 48621d4..0000000 Binary files a/assets/mojang/img/bg-wool-white-dark.png and /dev/null differ diff --git a/assets/mojang/img/bg-wool-white.png b/assets/mojang/img/bg-wool-white.png deleted file mode 100644 index e830aab..0000000 Binary files a/assets/mojang/img/bg-wool-white.png and /dev/null differ diff --git a/assets/mojang/img/border-dungeons-25.png b/assets/mojang/img/border-dungeons-25.png deleted file mode 100644 index 26692a4..0000000 Binary files a/assets/mojang/img/border-dungeons-25.png and /dev/null differ diff --git a/assets/mojang/img/grass.png b/assets/mojang/img/grass.png deleted file mode 100644 index 247a968..0000000 Binary files a/assets/mojang/img/grass.png and /dev/null differ diff --git a/assets/mojang/svg/icons/color-cart.svg b/assets/mojang/svg/icons/color-cart.svg deleted file mode 100644 index 9d71cb5..0000000 --- a/assets/mojang/svg/icons/color-cart.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/color-chest--animated.svg b/assets/mojang/svg/icons/color-chest--animated.svg deleted file mode 100644 index 32285d9..0000000 --- a/assets/mojang/svg/icons/color-chest--animated.svg +++ /dev/null @@ -1,349 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/assets/mojang/svg/icons/color-chest.svg b/assets/mojang/svg/icons/color-chest.svg deleted file mode 100644 index cdeca1c..0000000 --- a/assets/mojang/svg/icons/color-chest.svg +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/color-close.svg b/assets/mojang/svg/icons/color-close.svg deleted file mode 100644 index 21bad4f..0000000 --- a/assets/mojang/svg/icons/color-close.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/color-dungeons-launcher.svg b/assets/mojang/svg/icons/color-dungeons-launcher.svg deleted file mode 100644 index 9eb4aba..0000000 --- a/assets/mojang/svg/icons/color-dungeons-launcher.svg +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/assets/mojang/svg/icons/color-facebook.svg b/assets/mojang/svg/icons/color-facebook.svg deleted file mode 100644 index 7bfe88d..0000000 --- a/assets/mojang/svg/icons/color-facebook.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/color-grass-block.svg b/assets/mojang/svg/icons/color-grass-block.svg deleted file mode 100644 index 986c509..0000000 --- a/assets/mojang/svg/icons/color-grass-block.svg +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/color-instagram.svg b/assets/mojang/svg/icons/color-instagram.svg deleted file mode 100644 index 6ccb214..0000000 --- a/assets/mojang/svg/icons/color-instagram.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/color-menu.svg b/assets/mojang/svg/icons/color-menu.svg deleted file mode 100644 index 9e25e52..0000000 --- a/assets/mojang/svg/icons/color-menu.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/color-reddit.svg b/assets/mojang/svg/icons/color-reddit.svg deleted file mode 100644 index 6440e43..0000000 --- a/assets/mojang/svg/icons/color-reddit.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/color-steve-alex.svg b/assets/mojang/svg/icons/color-steve-alex.svg deleted file mode 100644 index 1db0972..0000000 --- a/assets/mojang/svg/icons/color-steve-alex.svg +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/color-ten-players.svg b/assets/mojang/svg/icons/color-ten-players.svg deleted file mode 100644 index 1e2cbfc..0000000 --- a/assets/mojang/svg/icons/color-ten-players.svg +++ /dev/null @@ -1,268 +0,0 @@ - - color-ten-players - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/assets/mojang/svg/icons/color-twitter.svg b/assets/mojang/svg/icons/color-twitter.svg deleted file mode 100644 index 5d6def1..0000000 --- a/assets/mojang/svg/icons/color-twitter.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/color-two-players.svg b/assets/mojang/svg/icons/color-two-players.svg deleted file mode 100644 index a8e76fd..0000000 --- a/assets/mojang/svg/icons/color-two-players.svg +++ /dev/null @@ -1,56 +0,0 @@ - - color-two-players - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/assets/mojang/svg/icons/color-youtube.svg b/assets/mojang/svg/icons/color-youtube.svg deleted file mode 100644 index 7769d4e..0000000 --- a/assets/mojang/svg/icons/color-youtube.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/line-book.svg b/assets/mojang/svg/icons/line-book.svg deleted file mode 100644 index cb1815b..0000000 --- a/assets/mojang/svg/icons/line-book.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/line-box.svg b/assets/mojang/svg/icons/line-box.svg deleted file mode 100644 index 2429a75..0000000 --- a/assets/mojang/svg/icons/line-box.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/line-calendar.svg b/assets/mojang/svg/icons/line-calendar.svg deleted file mode 100644 index eda3bb7..0000000 --- a/assets/mojang/svg/icons/line-calendar.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/assets/mojang/svg/icons/line-collapse.svg b/assets/mojang/svg/icons/line-collapse.svg deleted file mode 100644 index 620c18e..0000000 --- a/assets/mojang/svg/icons/line-collapse.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/mojang/svg/icons/line-console.svg b/assets/mojang/svg/icons/line-console.svg deleted file mode 100644 index 34f21bf..0000000 --- a/assets/mojang/svg/icons/line-console.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/line-creeper.svg b/assets/mojang/svg/icons/line-creeper.svg deleted file mode 100644 index 05b1e08..0000000 --- a/assets/mojang/svg/icons/line-creeper.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/line-device.svg b/assets/mojang/svg/icons/line-device.svg deleted file mode 100644 index 52b77d8..0000000 --- a/assets/mojang/svg/icons/line-device.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/line-expand.svg b/assets/mojang/svg/icons/line-expand.svg deleted file mode 100644 index 4ffa50d..0000000 --- a/assets/mojang/svg/icons/line-expand.svg +++ /dev/null @@ -1,4 +0,0 @@ - - line-expand - - diff --git a/assets/mojang/svg/icons/line-globe.svg b/assets/mojang/svg/icons/line-globe.svg deleted file mode 100644 index 7b7b360..0000000 --- a/assets/mojang/svg/icons/line-globe.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/mojang/svg/icons/line-heart.svg b/assets/mojang/svg/icons/line-heart.svg deleted file mode 100644 index e1749f1..0000000 --- a/assets/mojang/svg/icons/line-heart.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - diff --git a/assets/mojang/svg/icons/line-hide.svg b/assets/mojang/svg/icons/line-hide.svg deleted file mode 100644 index b8f5524..0000000 --- a/assets/mojang/svg/icons/line-hide.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/assets/mojang/svg/icons/line-pc.svg b/assets/mojang/svg/icons/line-pc.svg deleted file mode 100644 index 58b5f81..0000000 --- a/assets/mojang/svg/icons/line-pc.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/line-pdf-file.svg b/assets/mojang/svg/icons/line-pdf-file.svg deleted file mode 100644 index 7bf47b1..0000000 --- a/assets/mojang/svg/icons/line-pdf-file.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - diff --git a/assets/mojang/svg/icons/line-shirt.svg b/assets/mojang/svg/icons/line-shirt.svg deleted file mode 100644 index d7849c6..0000000 --- a/assets/mojang/svg/icons/line-shirt.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/line-show.svg b/assets/mojang/svg/icons/line-show.svg deleted file mode 100644 index 3e51208..0000000 --- a/assets/mojang/svg/icons/line-show.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/line-vector-export.svg b/assets/mojang/svg/icons/line-vector-export.svg deleted file mode 100644 index 4424318..0000000 --- a/assets/mojang/svg/icons/line-vector-export.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/assets/mojang/svg/icons/line-vector-help.svg b/assets/mojang/svg/icons/line-vector-help.svg deleted file mode 100644 index 3345a84..0000000 --- a/assets/mojang/svg/icons/line-vector-help.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/assets/mojang/svg/icons/line-vr-enhanced.svg b/assets/mojang/svg/icons/line-vr-enhanced.svg deleted file mode 100644 index 8007a29..0000000 --- a/assets/mojang/svg/icons/line-vr-enhanced.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/mojang/svg/icons/line-vr-turning.svg b/assets/mojang/svg/icons/line-vr-turning.svg deleted file mode 100644 index 13499db..0000000 --- a/assets/mojang/svg/icons/line-vr-turning.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/mojang/svg/icons/line-vr-virtual-living-room.svg b/assets/mojang/svg/icons/line-vr-virtual-living-room.svg deleted file mode 100644 index c652524..0000000 --- a/assets/mojang/svg/icons/line-vr-virtual-living-room.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/mojang/svg/icons/line-wallet.svg b/assets/mojang/svg/icons/line-wallet.svg deleted file mode 100644 index 7ca344d..0000000 --- a/assets/mojang/svg/icons/line-wallet.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/pixel-arrow-down.svg b/assets/mojang/svg/icons/pixel-arrow-down.svg deleted file mode 100644 index 3bc2919..0000000 --- a/assets/mojang/svg/icons/pixel-arrow-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/pixel-arrow-left.svg b/assets/mojang/svg/icons/pixel-arrow-left.svg deleted file mode 100644 index c05bb36..0000000 --- a/assets/mojang/svg/icons/pixel-arrow-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/pixel-arrow-right.svg b/assets/mojang/svg/icons/pixel-arrow-right.svg deleted file mode 100644 index 5e529f6..0000000 --- a/assets/mojang/svg/icons/pixel-arrow-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/pixel-arrow-up.svg b/assets/mojang/svg/icons/pixel-arrow-up.svg deleted file mode 100644 index 5484365..0000000 --- a/assets/mojang/svg/icons/pixel-arrow-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/pixel-begin-quote.svg b/assets/mojang/svg/icons/pixel-begin-quote.svg deleted file mode 100644 index aed637f..0000000 --- a/assets/mojang/svg/icons/pixel-begin-quote.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/mojang/svg/icons/pixel-caret.svg b/assets/mojang/svg/icons/pixel-caret.svg deleted file mode 100644 index bbe043a..0000000 --- a/assets/mojang/svg/icons/pixel-caret.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/assets/mojang/svg/icons/pixel-check.svg b/assets/mojang/svg/icons/pixel-check.svg deleted file mode 100644 index be9e4e8..0000000 --- a/assets/mojang/svg/icons/pixel-check.svg +++ /dev/null @@ -1,7 +0,0 @@ - - Check - - - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/pixel-close.svg b/assets/mojang/svg/icons/pixel-close.svg deleted file mode 100644 index c200858..0000000 --- a/assets/mojang/svg/icons/pixel-close.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/assets/mojang/svg/icons/pixel-end-quote.svg b/assets/mojang/svg/icons/pixel-end-quote.svg deleted file mode 100644 index d6e8a9d..0000000 --- a/assets/mojang/svg/icons/pixel-end-quote.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/mojang/svg/icons/pixel-facebook.svg b/assets/mojang/svg/icons/pixel-facebook.svg deleted file mode 100644 index c749be5..0000000 --- a/assets/mojang/svg/icons/pixel-facebook.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/pixel-instagram.svg b/assets/mojang/svg/icons/pixel-instagram.svg deleted file mode 100644 index 843ae5a..0000000 --- a/assets/mojang/svg/icons/pixel-instagram.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/pixel-pause.svg b/assets/mojang/svg/icons/pixel-pause.svg deleted file mode 100644 index 86cddd3..0000000 --- a/assets/mojang/svg/icons/pixel-pause.svg +++ /dev/null @@ -1,7 +0,0 @@ - - pixel-pause - - - - - diff --git a/assets/mojang/svg/icons/pixel-play.svg b/assets/mojang/svg/icons/pixel-play.svg deleted file mode 100644 index bac7c5b..0000000 --- a/assets/mojang/svg/icons/pixel-play.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/pixel-reddit.svg b/assets/mojang/svg/icons/pixel-reddit.svg deleted file mode 100644 index 94c09a4..0000000 --- a/assets/mojang/svg/icons/pixel-reddit.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/pixel-twitter.svg b/assets/mojang/svg/icons/pixel-twitter.svg deleted file mode 100644 index 170bec6..0000000 --- a/assets/mojang/svg/icons/pixel-twitter.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/assets/mojang/svg/icons/pixel-youtube.svg b/assets/mojang/svg/icons/pixel-youtube.svg deleted file mode 100644 index 548fab4..0000000 --- a/assets/mojang/svg/icons/pixel-youtube.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/mojang/svg/icons/what-block.svg b/assets/mojang/svg/icons/what-block.svg deleted file mode 100644 index 9bc368a..0000000 --- a/assets/mojang/svg/icons/what-block.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/mojang/svg/icons/what-computer.svg b/assets/mojang/svg/icons/what-computer.svg deleted file mode 100644 index 559a3fb..0000000 --- a/assets/mojang/svg/icons/what-computer.svg +++ /dev/null @@ -1,115 +0,0 @@ - - what-computer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/assets/mojang/svg/icons/what-devices.svg b/assets/mojang/svg/icons/what-devices.svg deleted file mode 100644 index cfb932a..0000000 --- a/assets/mojang/svg/icons/what-devices.svg +++ /dev/null @@ -1,367 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/assets/mojang/svg/logos/cero-a.svg b/assets/mojang/svg/logos/cero-a.svg deleted file mode 100644 index 440cf70..0000000 --- a/assets/mojang/svg/logos/cero-a.svg +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/assets/mojang/svg/logos/esrb.svg b/assets/mojang/svg/logos/esrb.svg deleted file mode 100644 index 8521b99..0000000 --- a/assets/mojang/svg/logos/esrb.svg +++ /dev/null @@ -1,34 +0,0 @@ - - esrb - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/assets/mojang/svg/logos/microsoft-studios.svg b/assets/mojang/svg/logos/microsoft-studios.svg deleted file mode 100644 index 18dcf16..0000000 --- a/assets/mojang/svg/logos/microsoft-studios.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/assets/mojang/svg/logos/microsoft.svg b/assets/mojang/svg/logos/microsoft.svg deleted file mode 100644 index 14de13c..0000000 --- a/assets/mojang/svg/logos/microsoft.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/assets/mojang/svg/logos/minecon-earth-party-2018.svg b/assets/mojang/svg/logos/minecon-earth-party-2018.svg deleted file mode 100644 index 48543d4..0000000 --- a/assets/mojang/svg/logos/minecon-earth-party-2018.svg +++ /dev/null @@ -1,343 +0,0 @@ - - - minecon_earth_party_2018 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/assets/mojang/svg/logos/minecon.svg b/assets/mojang/svg/logos/minecon.svg deleted file mode 100644 index 583b19a..0000000 --- a/assets/mojang/svg/logos/minecon.svg +++ /dev/null @@ -1,412 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/assets/mojang/svg/logos/minecraft-core-brand.svg b/assets/mojang/svg/logos/minecraft-core-brand.svg deleted file mode 100644 index fab92f9..0000000 --- a/assets/mojang/svg/logos/minecraft-core-brand.svg +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/assets/mojang/svg/logos/minecraft-dungeons.svg b/assets/mojang/svg/logos/minecraft-dungeons.svg deleted file mode 100644 index 1b2999e..0000000 --- a/assets/mojang/svg/logos/minecraft-dungeons.svg +++ /dev/null @@ -1,558 +0,0 @@ - - diff --git a/assets/mojang/svg/logos/minecraft-java-edition.svg b/assets/mojang/svg/logos/minecraft-java-edition.svg deleted file mode 100644 index b910e3a..0000000 --- a/assets/mojang/svg/logos/minecraft-java-edition.svg +++ /dev/null @@ -1,786 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/assets/mojang/svg/logos/minecraft.svg b/assets/mojang/svg/logos/minecraft.svg deleted file mode 100644 index ff9fc9b..0000000 --- a/assets/mojang/svg/logos/minecraft.svg +++ /dev/null @@ -1,591 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/assets/mojang/svg/logos/mojang-studios-horizontal.svg b/assets/mojang/svg/logos/mojang-studios-horizontal.svg deleted file mode 100644 index fcb6376..0000000 --- a/assets/mojang/svg/logos/mojang-studios-horizontal.svg +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/assets/mojang/svg/logos/mono-microsoft-studios.svg b/assets/mojang/svg/logos/mono-microsoft-studios.svg deleted file mode 100644 index da01254..0000000 --- a/assets/mojang/svg/logos/mono-microsoft-studios.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/assets/mojang/svg/logos/mono-microsoft.svg b/assets/mojang/svg/logos/mono-microsoft.svg deleted file mode 100644 index 61f6d96..0000000 --- a/assets/mojang/svg/logos/mono-microsoft.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/assets/mojang/svg/logos/mono-mojang-studios-horizontal.svg b/assets/mojang/svg/logos/mono-mojang-studios-horizontal.svg deleted file mode 100644 index 7542964..0000000 --- a/assets/mojang/svg/logos/mono-mojang-studios-horizontal.svg +++ /dev/null @@ -1,21 +0,0 @@ - diff --git a/assets/mojang/svg/logos/mono-windows.svg b/assets/mojang/svg/logos/mono-windows.svg deleted file mode 100644 index 0737a5f..0000000 --- a/assets/mojang/svg/logos/mono-windows.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/assets/mojang/svg/logos/mono-xbox-game-studios.svg b/assets/mojang/svg/logos/mono-xbox-game-studios.svg deleted file mode 100644 index f677a8e..0000000 --- a/assets/mojang/svg/logos/mono-xbox-game-studios.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/assets/mojang/svg/logos/mono-xbox.svg b/assets/mojang/svg/logos/mono-xbox.svg deleted file mode 100644 index 4794193..0000000 --- a/assets/mojang/svg/logos/mono-xbox.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/assets/mojang/svg/logos/pegi.svg b/assets/mojang/svg/logos/pegi.svg deleted file mode 100644 index 3e69832..0000000 --- a/assets/mojang/svg/logos/pegi.svg +++ /dev/null @@ -1,27 +0,0 @@ - - pegi - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/assets/mojang/svg/logos/realms.svg b/assets/mojang/svg/logos/realms.svg deleted file mode 100644 index 0b1785f..0000000 --- a/assets/mojang/svg/logos/realms.svg +++ /dev/null @@ -1,282 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/assets/mojang/svg/logos/storymode.svg b/assets/mojang/svg/logos/storymode.svg deleted file mode 100644 index b622cdc..0000000 --- a/assets/mojang/svg/logos/storymode.svg +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - - - - - - - - - - - - - storymode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/assets/mojang/svg/logos/xbox-game-studios.svg b/assets/mojang/svg/logos/xbox-game-studios.svg deleted file mode 100644 index 6ffdf38..0000000 --- a/assets/mojang/svg/logos/xbox-game-studios.svg +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/assets/mojang/svg/shapes/ribbon.svg b/assets/mojang/svg/shapes/ribbon.svg deleted file mode 100644 index 5bec102..0000000 --- a/assets/mojang/svg/shapes/ribbon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/mojang/svg/shapes/shape-model-classic.svg b/assets/mojang/svg/shapes/shape-model-classic.svg deleted file mode 100644 index 420430c..0000000 --- a/assets/mojang/svg/shapes/shape-model-classic.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/assets/mojang/svg/shapes/shape-model-slim.svg b/assets/mojang/svg/shapes/shape-model-slim.svg deleted file mode 100644 index e82af94..0000000 --- a/assets/mojang/svg/shapes/shape-model-slim.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/assets/mojang/svg/shapes/square-like-black.svg b/assets/mojang/svg/shapes/square-like-black.svg deleted file mode 100644 index 52ffcb2..0000000 --- a/assets/mojang/svg/shapes/square-like-black.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/assets/mojang/svg/shapes/square-like.svg b/assets/mojang/svg/shapes/square-like.svg deleted file mode 100644 index b295719..0000000 --- a/assets/mojang/svg/shapes/square-like.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/assets/staffpfp/PeterMaZep.png b/assets/staffpfp/PeterMaZep.png deleted file mode 100644 index aa2b5f8..0000000 Binary files a/assets/staffpfp/PeterMaZep.png and /dev/null differ diff --git a/assets/staffpfp/staff.png b/assets/staffpfp/staff.png deleted file mode 100644 index 51689a1..0000000 Binary files a/assets/staffpfp/staff.png and /dev/null differ diff --git a/index.html b/index.html index 991fcf2..d437c1a 100644 --- a/index.html +++ b/index.html @@ -1,125 +1,41 @@ --- layout: default title: Home +description: Sign in with your Minecraft username to browse PCoins and support PWindows. +permalink: / --- -
+
- -

Welcome to the
PWindows Shop

-

Enter your Minecraft username to buy PCoins

- -
- - -
-

+ +

Welcome to the PWindows Shop

+

Enter your Minecraft username to browse PCoins.

+ +
+ +
+ + +
+
+

-
or
- -
- - - Browse Merch - - - - Donate - +
Coming soon
+
+ +
- - - +
diff --git a/products/index.html b/products/index.html index 5bed631..ced8741 100644 --- a/products/index.html +++ b/products/index.html @@ -1,205 +1,84 @@ --- layout: default -title: Shop +title: PCoins Shop +description: Browse PCoins bundles and support PWindows. +permalink: /products/ --- -
+
- +
-
-
+ +
+
{% assign products = site.products | sort: 'price_usd' %} {% for product in products %} -
- - + + + {% endif %} {% endfor %} - - -
- - + +