From 75a097a018a0090f5902758353c578fce4aa2a25 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sat, 23 May 2026 18:43:42 +0000
Subject: [PATCH] =CustomBlocks.php overhaul relatively complete. Also refactored the gallery in gallery.min.js and the jvbRenderGallery.

---
 build/glossary/style-index-rtl.css                             |    2 
 src/faq/style.scss                                             |    6 
 build/drawer-menu/style-index-rtl.css                          |    2 
 assets/css/forms.min.css                                       |    2 
 build/faq/style-index.css                                      |    2 
 build/drawer-menu/style-index.css                              |    2 
 src/gmbreviews/style.scss                                      |   14 
 assets/css/dash.min.css                                        |    2 
 src/video/style.scss                                           |   12 
 inc/managers/SEO/render/Thing/Intangible/Quantity/Duration.php |    5 
 inc/helpers/media.php                                          |    1 
 src/forms/style.scss                                           |  464 ++++++++--------
 build/timeline/style-index.css                                 |    2 
 inc/blocks/CustomBlocks.php                                    |  781 ++++++++++++++++++--------
 build/timeline/style-index-rtl.css                             |    2 
 build/video/style-index.css                                    |    2 
 src/timeline/style.scss                                        |    8 
 build/video/style-index-rtl.css                                |    2 
 assets/js/concise/Gallery.js                                   |   51 -
 build/faq/style-index-rtl.css                                  |    2 
 assets/css/nav.min.css                                         |    2 
 build/glossary/style-index.css                                 |    2 
 build/gmbreviews/style-index.css                               |    2 
 build/gmbreviews/style-index-rtl.css                           |    2 
 inc/utility/Image.php                                          |    3 
 assets/js/min/gallery.min.js                                   |    2 
 inc/blocks/VideoCoverBlock.php                                 |   60 +
 src/feed/style.scss                                            |   90 +-
 inc/utility/setup.php                                          |    1 
 inc/admin/Integrations.php                                     |    8 
 src/drawer-menu/style.scss                                     |    8 
 build/feed/style-index-rtl.css                                 |    2 
 inc/utility/Video.php                                          |  146 +++++
 src/glossary/style.scss                                        |    6 
 build/feed/style-index.css                                     |    2 
 inc/managers/SEO/render/Traits/_Properties/durationTrait.php   |    5 
 36 files changed, 1,092 insertions(+), 613 deletions(-)

diff --git a/assets/css/dash.min.css b/assets/css/dash.min.css
index 6057769..5af8a13 100644
--- a/assets/css/dash.min.css
+++ b/assets/css/dash.min.css
@@ -1 +1 @@
-header>a{margin:0 auto}nav.sidebar{position:fixed;top:var(--btn);bottom:0;left:0;z-index:var(--z-4);background-color:var(--base);box-shadow:rgba(var(--base-rgb),var(--op-45)) var(--shdw);width:var(--btn);transition:var(--trans-size);overflow:hidden auto;height:100%;padding-bottom:var(--btn)}nav.sidebar>ul{--gap:0}nav.sidebar .toggle.main.main{padding:0;position:fixed;left:unset;bottom:0;right:0;z-index:var(--z-8);box-shadow:rgba(var(--base-rgb),var(--op-45)) var(--shdw);width:var(--btn);height:var(--btn)}nav.sidebar .toggle.main .icon{--w:1.2em}nav.sidebar .toggle:not(.main){display:none}nav.sidebar.open .toggle:not(.main){display:inline-flex}nav.sidebar .icon{--w:var(--chip_);width:var(--btn);min-width:var(--chip);transition:var(--trans-size),transform var(--trans-base)}nav.sidebar.open .icon{--w:var(--chip);width:var(--w)}nav.sidebar.open{width:fit-content;max-width:100%}nav.sidebar ul{height:max-content;width:100%;--gap:0}nav.sidebar .toggle{width:var(--btn);height:var(--chipchip);box-shadow:none;background-color:transparent;min-height:0}nav.sidebar .toggle:focus,nav.sidebar .toggle:hover{background-color:var(--action-0);color:var(--action-contrast)}nav.sidebar .title{max-width:0;opacity:0;transition:max-width var(--trans-base)}nav.sidebar.open .title{white-space:nowrap;max-width:max-content;opacity:1}nav.sidebar .icon{min-width:var(--chip_)}nav.sidebar li{--justify:center;--wrap:nowrap;--align:flex-start;overflow:hidden}nav.sidebar.open li>div{width:100%;padding-right:var(--btn)}nav.sidebar .has-submenu{height:max-content}nav.sidebar li ul{width:0}nav.sidebar li.open ul{width:max-content}nav.sidebar.open li.has-submenu>div{padding-right:0}nav.sidebar.open li.has-submenu>ul{padding-left:var(--chip)}nav.sidebar .a{color:var(--contrast-200)}nav.sidebar .a,nav.sidebar a{height:var(--chipchip);display:flex;justify-content:center;align-items:center;transition:none;padding-left:0}nav.sidebar.open .a,nav.sidebar.open a{width:100%;justify-content:flex-start}nav.sidebar .has-submenu ul{max-height:0;height:0;overflow:hidden;transition:var(--trans-size)}nav.sidebar .has-submenu.open>ul{height:100%;max-height:fit-content}aside.main.main#queue{bottom:0}button.qtoggle.sticky{bottom:0;left:0}section.replace{margin:0 var(--btn_) 0 calc(var(--btn) + var(--chipchip))}section.replace>*{max-width:100%}.dashboard :is(h1,h2,h3,h4,h5,h6){text-transform:none;margin:.5em 0 1em}ul.dashboard{margin:0;padding:0;display:flex;justify-content:flex-start;gap:.5rem;flex-wrap:wrap}ul.dashboard li{list-style:none}ul.dashboard p{margin:0}.dashboard .main-actions,.dashboard main>footer{position:absolute;left:var(--offScreen);width:0;padding:0}.all-filters{margin:1rem 0;padding:1rem 0;border:1px solid var(--base-100);border-width:1px 0;--gap:0;width:100%}.all-filters summary{width:100%}.all-filters summary:hover{color:var(--action-0)}.all-filters .row{--justify:flex-start}.all-filters+[data-action=clear-filters]{--w:1em;width:max-content;font-size:var(--txt-x-small);min-height:var(--chip);margin-left:auto;display:block;position:relative;top:-1rem}.all-filters [data-action=refresh]{margin-left:auto;--w:1em!important;flex-wrap:nowrap;width:max-content;justify-content:flex-start;transition:var(--trans-size);min-height:var(--chip);font-size:var(--txt-x-small)}.all-filters [data-action=refresh]:focus,.all-filters [data-action=refresh]:hover{width:max-content}.all-filters [data-action=refresh] span{max-width:0;transition:var(--trans-size);overflow:hidden;white-space:nowrap}.all-filters [data-action=refresh]:focus span,.all-filters [data-action=refresh]:hover span{max-width:max-content}.all-filters .btn+label{box-shadow:var(--shdw-none);color:var(--contrast-200)}.all-filters .radio-options input:not(.ch):checked+label{box-shadow:rgba(var(--base-rgb),var(--op-6)) var(--shdw-inset);color:var(--contrast-50);border-color:var(--contrast-50)}.all-filters .filters{width:100%}.controls .radio-options,.filters.row.start{--align:center;--justify:flex-start;--gap:.5rem}.all-filters span.label{text-transform:uppercase;font-size:var(--txt-small);font-weight:900;width:15vw;display:inline-flex;align-items:center;padding-right:2rem}@media (max-width:767px){.all-filters>.row{padding:.5rem 0}.all-filters span.label{padding-top:.5rem;width:100%;border-top:1px solid var(--base-200)}}.controls .icon{--w:1.4rem}.all-filters .btn+label,.all-filters button{height:var(--chip_);padding:.125rem!important;min-width:0;min-height:var(--chip_);width:var(--chip_)}.all-filters>.row{padding:.25rem 0}.all-filters .btn+label:focus,.all-filters .btn+label:hover,.all-filters button:focus,.all-filters button:hover{background-color:transparent;color:var(--action-0);border-color:var(--action-0)}.search-container:not(.open) .clear-search,.search-container:not(.open) input[type=search]{transform:scaleX(0);transform-origin:left;width:0;padding:0;transition:transform var(--trans-base),width var(--trans-base),padding var(--trans-base)}.search-container button{padding:.5rem}.search-container .icon{--w:1.5rem}.search-container.open .clear-search,.search-container.open input[type=search]{transform:scaleX(1);transform-origin:left;transition:transform var(--trans-base),width var(--trans-base),padding var(--trans-base)}.all-filters>.search,.search-container,input[type=search]{width:100%}nav.tabs{position:fixed;z-index:var(--z-4);width:calc(100% - var(--btn));top:var(--btn);left:var(--btn);background-color:rgba(var(--base-rgb),var(--op-45));box-shadow:rgba(var(--base-rgb),var(--op-6)) var(--shdw-down)}.replace:has(nav.tabs){margin-top:var(--btn)}
\ No newline at end of file
+header>a{margin:0 auto}nav.sidebar{position:fixed;top:var(--btn);bottom:0;left:0;z-index:var(--z-4);background-color:rgb(var(--base));box-shadow:rgba(var(--base),var(--op-45)) var(--shdw);width:var(--btn);transition:var(--trans-size);overflow:hidden auto;height:100%;padding-bottom:var(--btn)}nav.sidebar>ul{--gap:0}nav.sidebar .toggle.main.main{padding:0;position:fixed;left:unset;bottom:0;right:0;z-index:var(--z-8);box-shadow:rgba(var(--base),var(--op-45)) var(--shdw);width:var(--btn);height:var(--btn)}nav.sidebar .toggle.main .icon{--w:1.2em}nav.sidebar .toggle:not(.main){display:none}nav.sidebar.open .toggle:not(.main){display:inline-flex}nav.sidebar .icon{--w:var(--chip_);width:var(--btn);min-width:var(--chip);transition:var(--trans-size),transform var(--trans-base)}nav.sidebar.open .icon{--w:var(--chip);width:var(--w)}nav.sidebar.open{width:fit-content;max-width:100%}nav.sidebar ul{height:max-content;width:100%;--gap:0}nav.sidebar .toggle{width:var(--btn);height:var(--chipchip);box-shadow:none;background-color:transparent;min-height:0}nav.sidebar .toggle:focus,nav.sidebar .toggle:hover{background-color:rgb(var(--action-0));color:var(--action-contrast)}nav.sidebar .title{max-width:0;opacity:0;transition:max-width var(--trans-base)}nav.sidebar.open .title{white-space:nowrap;max-width:max-content;opacity:1}nav.sidebar .icon{min-width:var(--chip_)}nav.sidebar li{--justify:center;--wrap:nowrap;--align:flex-start;overflow:hidden}nav.sidebar.open li>div{width:100%;padding-right:var(--btn)}nav.sidebar .has-submenu{height:max-content}nav.sidebar li ul{width:0}nav.sidebar li.open ul{width:max-content}nav.sidebar.open li.has-submenu>div{padding-right:0}nav.sidebar.open li.has-submenu>ul{padding-left:var(--chip)}nav.sidebar .a{color:rgb(var(--contrast-200))}nav.sidebar .a,nav.sidebar a{height:var(--chipchip);display:flex;justify-content:center;align-items:center;transition:none;padding-left:0}nav.sidebar.open .a,nav.sidebar.open a{width:100%;justify-content:flex-start}nav.sidebar .has-submenu ul{max-height:0;height:0;overflow:hidden;transition:var(--trans-size)}nav.sidebar .has-submenu.open>ul{height:100%;max-height:fit-content}aside.main.main#queue{bottom:0}button.qtoggle.sticky{bottom:0;left:0}section.replace{margin:0 var(--btn_) 0 calc(var(--btn) + var(--chipchip))}section.replace>*{max-width:100%}.dashboard :is(h1,h2,h3,h4,h5,h6){text-transform:none;margin:.5em 0 1em}ul.dashboard{margin:0;padding:0;display:flex;justify-content:flex-start;gap:.5rem;flex-wrap:wrap}ul.dashboard li{list-style:none}ul.dashboard p{margin:0}.dashboard .main-actions,.dashboard main>footer{position:absolute;left:var(--offScreen);width:0;padding:0}.all-filters{margin:1rem 0;padding:1rem 0;border:1px solid rgb(var(--base-100));border-width:1px 0;--gap:0;width:100%}.all-filters summary{width:100%}.all-filters summary:hover{color:rgb(var(--action-0))}.all-filters .row{--justify:flex-start}.all-filters+[data-action=clear-filters]{--w:1em;width:max-content;font-size:var(--txt-x-small);min-height:var(--chip);margin-left:auto;display:block;position:relative;top:-1rem}.all-filters [data-action=refresh]{margin-left:auto;--w:1em!important;flex-wrap:nowrap;width:max-content;justify-content:flex-start;transition:var(--trans-size);min-height:var(--chip);font-size:var(--txt-x-small)}.all-filters [data-action=refresh]:focus,.all-filters [data-action=refresh]:hover{width:max-content}.all-filters [data-action=refresh] span{max-width:0;transition:var(--trans-size);overflow:hidden;white-space:nowrap}.all-filters [data-action=refresh]:focus span,.all-filters [data-action=refresh]:hover span{max-width:max-content}.all-filters .btn+label{box-shadow:var(--shdw-none);color:rgb(var(--contrast-200))}.all-filters .radio-options input:not(.ch):checked+label{box-shadow:rgba(var(--base),var(--op-6)) var(--shdw-inset);color:rgb(var(--contrast-50));border-color:rgb(var(--contrast-50))}.all-filters .filters{width:100%}.controls .radio-options,.filters.row.start{--align:center;--justify:flex-start;--gap:.5rem}.all-filters span.label{text-transform:uppercase;font-size:var(--txt-small);font-weight:900;width:15vw;display:inline-flex;align-items:center;padding-right:2rem}@media (max-width:767px){.all-filters>.row{padding:.5rem 0}.all-filters span.label{padding-top:.5rem;width:100%;border-top:1px solid rgb(var(--base-200))}}.controls .icon{--w:1.4rem}.all-filters .btn+label,.all-filters button{height:var(--chip_);padding:.125rem!important;min-width:0;min-height:var(--chip_);width:var(--chip_)}.all-filters>.row{padding:.25rem 0}.all-filters .btn+label:focus,.all-filters .btn+label:hover,.all-filters button:focus,.all-filters button:hover{background-color:transparent;color:rgb(var(--action-0));border-color:rgb(var(--action-0))}.search-container:not(.open) .clear-search,.search-container:not(.open) input[type=search]{transform:scaleX(0);transform-origin:left;width:0;padding:0;transition:transform var(--trans-base),width var(--trans-base),padding var(--trans-base)}.search-container button{padding:.5rem}.search-container .icon{--w:1.5rem}.search-container.open .clear-search,.search-container.open input[type=search]{transform:scaleX(1);transform-origin:left;transition:transform var(--trans-base),width var(--trans-base),padding var(--trans-base)}.all-filters>.search,.search-container,input[type=search]{width:100%}nav.tabs{position:fixed;z-index:var(--z-4);width:calc(100% - var(--btn));top:var(--btn);left:var(--btn);background-color:rgba(var(--base),var(--op-45));box-shadow:rgba(var(--base),var(--op-6)) var(--shdw-down)}.replace:has(nav.tabs){margin-top:var(--btn)}
\ No newline at end of file
diff --git a/assets/css/forms.min.css b/assets/css/forms.min.css
index ba25ac6..f674311 100644
--- a/assets/css/forms.min.css
+++ b/assets/css/forms.min.css
@@ -1 +1 @@
-.field{width:100%;margin:.5em 0;padding:.5em 0}.field+.field{border-top:1px solid var(--base-200)}.field .wrapper{width:100%;position:relative}.field .validation{flex-shrink:0;max-width:0;transition:var(--trans-size)}.field.has-error .validation.error,.field.has-success .validation.success{max-width:var(--btn)}.field.has-error .error{color:var(--error)}.field.has-error input,.field.has-error select,.field.has-error textarea{border-color:var(--error);background-color:var(--errorBack)}.field.has-error input:focus,.field.has-error select:focus,.field.has-error textarea:focus{outline-color:var(--error);box-shadow:rgba(var(--error-rgb),.2)}.field.has-success .success{color:var(--success)}.validation-message{color:var(--errorText);font-size:var(--txt-small);margin-top:.25rem;display:block}.field[data-field=post_status] .wrapper{--justify:flex-start}.field[data-field=post_status] .btn+label{width:var(--chipchip);min-height:var(--chipchip);padding:0}.field[data-field=post_status] .btn+label:hover,.field[data-field=post_status] .btn:focus+label{color:var(--action-contrast)}.date-wrapper{position:relative;display:inline-block}input[type=date]{padding:8px 36px 8px 8px;border-radius:4px}input[type=date]::-webkit-calendar-picker-indicator{opacity:0;width:100%;height:100%;position:absolute;top:0;left:0;cursor:pointer}input[type=date]+.icon{--w:20px;position:absolute;right:10px;top:50%;transform:translateY(-50%);pointer-events:none}input:is([type=time],[type=datetime-local],[type=date]){padding:.5rem;border:1px solid var(--contrast-200);border-radius:4px;font-size:14px;min-width:180px;background:var(--base);color:var(--contrast);cursor:pointer}.date-wrapper input[type=date]:focus,.datetime-wrapper input[type=datetime-local]:focus,.time-wrapper input[type=time]:focus,.wrapper input:is([type=time],[type=datetime-local],[type=date]):focus{border-color:var(--action-0);box-shadow:0 0 0 2px rgba(var(--action-rgb),.1)}.date-wrapper .icon,.datetime-wrapper .icon,.time-wrapper .icon,.wrapper .icon{width:18px;height:18px;background-color:var(--contrast);opacity:.7}.quantity{margin:0;display:inline-flex;width:fit-content;align-items:center;justify-content:center;border:1px solid transparent;border-radius:4px;position:relative}.quantity:focus-within{border-color:var(--action-0)}.quantity label{margin:0;font-size:var(--txt-small)}.quantity button{background:var(--base);padding:0;width:var(--chip_);height:var(--chip_);min-height:0;z-index:0;position:relative;border:1px solid var(--base-200);color:var(--contrast-200)}.quantity button:hover:not(:disabled){color:var(--action-0);border-color:var(--action-0);background-color:var(--base)}.quantity button:active:not(:disabled){background-color:var(--action-0);color:var(--light-0);transform:scale(.95)}.quantity button:disabled{opacity:.5;cursor:not-allowed}.quantity input[type=number]{z-index:1;border:1px solid var(--base-200);background:var(--base);text-align:center;font-size:1.1rem;width:60px;height:48px;margin:0;padding:0!important;appearance:textfield}.quantity input[type=number]::-webkit-inner-spin-button,.quantity input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.quantity input[type=number]:focus{background-color:var(--base-50)}.quantity button.increase{left:-2px;border-radius:0 4px 4px 0}.quantity button.decrease{right:-2px;border-radius:4px 0 0 4px}details.uploader .file-upload-container{margin:1rem 0;max-width:100%}.field.upload{position:relative}.field.upload .progress{display:none}.field.upload.uploading .progress{display:block}.field.upload .actions{position:absolute;top:0;right:0}.empty-group,.file-upload-wrapper,.preview-wrap .item-grid{border:2px dashed var(--action-0);border-radius:4px;padding:2rem;text-align:center;transition:all .3s ease;background:rgba(var(--action-rgb),var(--op-1));position:relative;cursor:pointer;user-select:none}.file-upload-wrapper{max-width:var(--content);margin:1rem auto}.file-upload-wrapper h2{margin:0;font-size:var(--txt-large)}.dragover,.empty-group:hover,.file-upload-wrapper:hover,.preview-wrap .item-grid:hover{background:rgba(var(--action-rgb),var(--op-2));border-color:var(--action-0)}.preview-wrap:has(.item-grid:empty) .selection-controls{display:none}.preview-wrap .item-grid{min-height:20vh}.preview-wrap .item-grid:empty::before{content:'Unsorted images become their own posts.';display:block}.file-upload-wrapper input[type=file]{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer}.empty-group p,.file-upload-text{margin:0}.empty-group p strong,.file-upload-text strong{color:var(--action-0);text-decoration:underline}.item-grid.groups{grid-template-columns:repeat(1,1fr)}.item-grid.group{margin-bottom:0}.item-grid:is(.restore,.group,.preview) .item{display:block;--w:1.1em}.item-grid:is(.restore,.group,.preview) button{padding:.25rem .5rem}.item-grid:is(.restore,.group,.preview) .preview>input[type=checkbox]:not(.label-button)+label{padding-left:0;margin:0}.item-grid:is(.restore,.group,.preview) .item .item-actions{position:absolute;top:0;right:0;left:var(--chipchip)}.item-grid:is(.restore,.group,.preview) summary{padding:.5rem}.item-grid:is(.restore,.group,.preview):has([type=checkbox]:checked){padding:.5rem;background-color:rgba(var(--action-rgb),var(--op-4));opacity:1}.item-grid:is(.restore,.group,.preview):has([type=checkbox]:checked) img{filter:none}.item-grid:is(.restore,.group,.preview):has([type=checkbox]:checked) .item img{filter:var(--filter)}.item-grid.preview summary span,.item-grid:is(.restore,.group,.preview):has([type=checkbox]:checked) details{display:none}[type=radio].featured:checked+label .icon-star,[type=radio].featured:not(:checked)+label .icon-star-fi{display:none}[type=radio].featured:checked+label .icon-star-fi,[type=radio].featured:not(:checked)+label .icon-star{display:inline-block}.item:is(.restore,.upload){border-radius:var(--radius);aspect-ratio:unset;overflow:hidden;background:var(--base);border:1px solid var(--base-200)}.item:is(.restore,.upload) [for=select-item]{aspect-ratio:1}.item.upload:has(details[open]){grid-column:1/-1;padding:.5rem 10%;margin:1rem 0;background-color:transparent;border:2px dashed var(--action-200)}.item.upload:has(details[open]) details[open]{background-color:transparent}.item:is(.restore,.upload) img{transform:scale(1);transition:transform var(--trans-base)}.item:is(.upload,.restore):hover img{transform:scale(1.02)}.upload-group{padding:5px;border-radius:var(--radius);background-color:rgba(var(--action-rgb),var(--op-1))}.upload-group .selected .field{margin:0}.upload-group .selection-actions button{aspect-ratio:unset}.submit-uploads{position:fixed;bottom:0;left:var(--btn_);z-index:var(--z-6);height:var(--btn);box-shadow:rgba(var(--base-rgb),var(--op-45)) var(--shdw);border-radius:var(--radius);animation:pulse-color 5s infinite;animation-delay:1s;background-color:var(--action-0);color:var(--action-contrast)}.submit-uploads:hover{background-color:var(--base-200);color:var(--contrast-200)}.empty-group{order:-1;grid-column:1/-1;padding:20px;border-radius:var(--radius);margin:10px 0;cursor:pointer;transition:all var(--trans-base);text-align:center;background-color:rgba(var(--action-rgb),var(--op-1))}.group-display:not([hidden])~.file-upload-container{display:none}.dragging,.upload.item.dragging{opacity:.7;transform:scale(.95) rotate(3deg);z-index:var(--z-7);box-shadow:0 8px 25px rgba(var(--contrast-rgb),var(--op-2))}.dragover{background:rgba(var(--action-rgb),var(--op-3))!important;border-color:var(--action-0)!important;transform:scale(1.05);animation:drop-pulse .8s infinite ease-in-out}.drag-preview{position:fixed;z-index:var(--z-9);width:fit-content;overflow:visible;pointer-events:none;opacity:.9;transform:scale(1.05);transition:transform .2s ease}.drag-preview .drag-items{width:max-content;height:max-content;position:relative}.drag-preview .drag-items .dragi-item{width:120px;height:120px;position:absolute;top:0;left:0;background:var(--base);border-radius:var(--radius-outer);box-shadow:rgba(var(--base-rgb),var(--op-45)) var(--shdw)}.drag-preview .drag-items .drag-item:nth-child(1){transform:rotate(-3deg);z-index:3}.drag-preview .drag-items .drag-item:nth-child(2){left:8px;top:-4px;transform:rotate(4deg);z-index:2;transition-delay:30ms}.drag-preview .drag-items .drag-item:nth-child(3){left:-6px;top:-8px;transform:rotate(-5deg);z-index:1;transition-delay:60ms}.drag-preview .drag-items .drag-item:nth-child(4){left:12px;top:-12px;transform:rotate(3deg);z-index:0;transition-delay:90ms}.drag-preview .drag-items .drag-item:nth-child(n+5){left:-10px;top:-16px;transform:rotate(-4deg);z-index:0;opacity:.8}.drag-preview .drag-items img,.drag-preview .drag-items video{width:100%;height:100%;object-fit:cover;display:block}.drag-preview .drag-count{position:absolute;top:-8px;right:-8px;background:var(--base-200);color:var(--contrast);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;box-shadow:rgba(var(--base-rgb),var(--op-45)) var(--shdw);z-index:var(--z-3)}.item.dragging{opacity:.5;transform:scale(.95);filter:grayscale(50%);transition:opacity .2s ease,transform .2s ease,filter .2s ease}@keyframes drop-pulse{0%,100%{background-color:rgba(var(--action-rgb),var(--op-3));transform:scale(1.02)}50%{background-color:var(rgba(var(--action-rgb),var(--op-4)));transform:scale(1.04)}}.selection-actions{display:flex;gap:.25rem}@media (max-width:767px){body:not(.uploading):has(.group-display:not([hidden])){overflow:hidden}body:not(.uploading):has(.group-display:not([hidden])) .qtoggle{z-index:var(--z-1)}.group-display.group-display{position:fixed;top:var(--btn);bottom:var(--btn);left:0;right:0;max-height:var(--maxHeight);overflow:hidden;z-index:var(--z-6);width:calc(100% - 1rem);height:calc(100% - 1rem);padding:0 0 3rem;--justify:flex-start;--align:flex-start;--gap:0}.group-display::before{content:'';display:block;z-index:-1;top:-.5rem;bottom:-.5rem;left:-.5rem;right:-.5rem;position:absolute;background-color:rgba(var(--base-rgb),var(--op-6));filter:blur(5px)}.group-display .preview-wrap,.group-display .sidebar{--wrap:nowrap;height:50%;overflow:hidden auto;position:relative;padding:.5rem}.group-display .preview-wrap{top:0}.group-display .preview-wrap .selected{display:flex;justify-content:space-between;align-items:center}.group-display .sidebar{bottom:0;flex-wrap:nowrap;overflow:hidden auto;background-color:var(--contrast-200);color:var(--base)}.group-display .sidebar>.hint{color:var(--contrast)}.group-display .sidebar .header{display:none}.group-display .preview-actions{top:0;flex-shrink:0}.group-display .preview-wrap>.hint,.group-display .sidebar>.hint{bottom:0;margin:0;text-align:center}.group-display .preview-actions,.group-display .preview-wrap>.hint,.group-display .sidebar>.hint{position:absolute;left:0;right:0;background-color:rgba(var(--base-rgb),var(--op-6));z-index:var(--z-3);box-shadow:rgba(var(--base-rgb),var(--op-45)) var(--shdw)}.group-display .item-grid{height:100%;overflow:hidden auto;grid-template-columns:repeat(3,1fr);padding:2rem 0}.group-display .sidebar>.item-grid{grid-template-columns:repeat(1,1fr);gap:1rem;padding:0}.group-display .sidebar .empty-group{order:0;position:sticky;height:fit-content;top:0;z-index:var(--z-3);background-color:rgba(var(--action-rgb),var(--op-6))}.group-display .sidebar .upload-group{order:1}.group-display .sidebar .empty-group p{margin:0}.group-display .field,.group-display .field label{margin:0;padding:0}.group-display .sidebar h4{margin:.25rem}.group-display .item{width:100%;height:max-content}.submit-uploads{bottom:var(--btn);left:0;right:0;width:100%;height:3rem}body.uploading .group-display.group-display{position:relative;top:unset;bottom:unset;right:unset;left:unset}}@media (min-width:768px){.group-display.group-display{--wrap:nowrap;--dir:row;--gap:1rem;--align:flex-start}.group-display .preview-wrap,.group-display .sidebar{--justify:flex-start;--wrap:nowrap;max-height:calc(100vh - var(--btnbtn));overflow:hidden auto}.group-display .preview-wrap,.group-display .sidebar{width:50%}.preview-actions,.preview-wrap .hint{position:sticky;z-index:var(--z-3);box-shadow:rgba(var(--base-rgb),var(--op-45)) var(--shdw);background-color:var(--base);width:100%}.preview-actions{top:0;left:0;right:0}.preview-actions .field{margin:0}.preview-wrap .hint,.sidebar>.hint{bottom:-1rem;padding-bottom:1rem;margin:0;left:0;right:0;text-align:center}}.item-grid.restore{grid-template-columns:repeat(1,1fr)}.editor-container .ql-toolbar{display:flex;background-color:var(--base-50);justify-content:flex-start;flex-wrap:wrap;padding:.25rem;gap:.5rem 1rem;border-top-left-radius:var(--radius);border-top-right-radius:var(--radius);border-bottom:4px solid var(--base-50)}.ql-toolbar button{min-height:0;padding:.5rem}.ql-toolbar .ql-formats{display:flex;gap:.25rem}.editor-container .ql-container{--padding:1rem;background-color:var(--base);border-bottom-left-radius:var(--radius);border-bottom-right-radius:var(--radius);height:fit-content;padding:2px;border:1px solid var(--base-200)}.editor-container .ql-container .ql-editor{padding:var(--padding);width:100%;height:100%}.ql-editor img{max-width:50%;height:auto}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-hidden{display:none}.ql-tooltip{position:absolute;transform:translateY(10px);background-color:var(--base-100);border:1px solid var(--base);box-shadow:0 0 5px rgba(var(--base-rgb),var(--op-6));color:var(--contrast);padding:5px 12px;white-space:nowrap}[data-type=single] .item-grid{display:flex}.repeater-row details summary::after{margin-left:0}.repeater-row details summary button{margin-left:auto}.repeater .field-input-wrapper{flex-direction:column}.repeater .repeater-items{width:100%}.add-repeater-row,.remove-row{margin-left:auto;min-height:0;height:var(--chipchip);background-color:var(--action-0)}.field.tag-list .row{margin-bottom:1rem}.field.tag-list .row .field{flex:1;min-width:150px;margin:0}.field.tag-list .tag .add-tag-item{flex-shrink:0;white-space:nowrap;margin-top:calc(var(--txt-medium) + 1rem)}.field.tag-list .tag-items{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;min-height:2rem}.field.tag-list .tag-item{background:var(--base-200);padding:.4rem .75rem;border-radius:4px;display:inline-flex;align-items:center;gap:.5rem;font-size:.9rem;line-height:1.2}.field.tag-list .tag-item:hover{background:var(--base-100)}.field.tag-list .tag-label{max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.field.tag-list .remove-tag{min-height:0;padding:.25rem;color:var(--contrast);transition:transform .2s;box-shadow:none}.field.tag-list .remove-tag:hover{transform:scale(1.2)}@media (max-width:768px){.field.tag-list .tag{flex-direction:column;align-items:stretch}.field.tag-list .tag .field{min-width:100%}}.form-progress{padding:0 1rem}.form-progress .progress{background:var(--base-100);border-radius:var(--radius);padding:1rem}.form-progress .bar{height:6px;background:var(--base-200);border-radius:3px;overflow:hidden;margin-bottom:.5rem}.form-progress .fill{height:100%;background:linear-gradient(90deg,var(--action-0),var(--action-200));width:0%;transition:width .4s ease;border-radius:3px}.form-progress .step-text{font-size:var(--txt-small);font-weight:600;color:var(--contrast-200)}form nav.tabs{position:relative;top:0;left:0;right:0;padding:1rem 0;gap:0;z-index:0}form nav.tabs button{position:relative;background:0 0;border:none;padding:.5rem 1rem .5rem 3rem;z-index:1}form nav.tabs .step-number{width:2.5rem;height:100%;border-radius:50% 0 0 50%;position:absolute;left:0;top:0;background:var(--base-200);color:var(--contrast-50);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:var(--txt-small);border:3px solid var(--base)}form nav.tabs button.pending .step-number{background:var(--base-100);color:var(--contrast-200)}form nav.tabs button.active .step-number,form nav.tabs button.current .step-number{background:var(--action-0);color:var(--action-contrast);border-color:var(--action-200)}form nav.tabs button.completed .step-number{background:var(--successBack);color:var(--successBack);border-color:var(--successText)}form nav.tabs button.completed .step-number::before{content:'✓';font-size:1.2rem;color:var(--successText);position:absolute}form nav.tabs button.completed h2{color:var(--contrast-200)}.step-navigation{margin-top:2rem;padding-top:2rem;border-top:1px solid var(--base-200);gap:1rem}.step-navigation .prev-step{background:var(--base-100)}.step-navigation .next-step,.step-navigation button[type=submit]{margin-left:auto}@media (max-width:768px){form nav.tabs button{min-width:80px;font-size:var(--txt-small)}form nav.tabs button h2{font-size:var(--txt-small)}form{--step-size:2rem}}.field input.error,.field select.error,.field textarea.error{border-color:var(--errorBack)}.error-message{color:var(--errorText);font-size:var(--txt-small);margin-top:.25rem;display:block}.form-summary{padding:2rem;border-radius:8px;margin-top:2rem;border:2px dashed var(--contrast-200)}.form-summary .message{margin-bottom:2rem}.form-summary .result+.result{position:relative;margin-top:1.5rem;padding-top:1.5rem}.form-summary .result+.result::before{position:absolute;top:0;left:16.5%;content:'';width:67%;height:1px;border-bottom:1px solid var(--base-200)}.form-summary h2{margin:1rem 0}.form-summary h4{background-color:var(--base-100);padding:.5rem 2rem;position:relative;left:-2rem;color:var(--contrast-200);font-size:.875rem;text-transform:uppercase;letter-spacing:.05em;margin-bottom:.75rem}.form-summary p{color:var(--text);margin:0}.group-summary,.repeater-summary{background:var(--base-100);padding:1rem;border-radius:4px;margin-top:.5rem}.repeater-row{margin-bottom:1rem}.repeater-row:last-child{margin-bottom:0}.selected-item{border:1px solid var(--base-200);border-radius:var(--radius);font-size:var(--txt-x-small);background-color:var(--base);padding:.25rem .5rem}.selected-item button{--w:.5em;min-height:1em;width:1em;padding:0}.selector .auto-wrapper,.selector .selected-items{flex:1;width:100%}.fstatus{z-index:var(--z-5);background-color:rgba(var(--base-rgb),var(--op-6));border-radius:var(--radius);padding:0 .5rem;position:fixed;right:.5rem;top:var(--btnbtn);--w:1em;box-shadow:rgba(var(--base-rgb),var(--op-6)) var(--shdw);--wrap:nowrap;--gap:1rem}.fstatus .spinner{display:none}.fstatus.loading .spinner{display:inline-block}.fstatus p{margin:0;padding:.25rem}.restore-uploads .item-grid.group .field.group,.restore-uploads .upload-group .selection-actions{display:none}.upload-group .item-grid.group{grid-template-columns:repeat(2,1fr)}.restore-uploads .item-grid.group{grid-template-columns:repeat(3,1fr)}fieldset{width:100%;border-color:var(--base-200)}.restore-form.restore-form[hidden]{display:block!important;position:fixed;bottom:var(--offScreen);right:var(--btnbtn);transition:bottom var(--trans-base);transition-duration:2s}.restore-form.restore-form:not([hidden]){width:50vw;padding:1rem;z-index:var(--z-7);background-color:rgba(var(--base-rgb),var(--op-6));border-radius:var(--radius);box-shadow:rgba(var(--action-rgb),var(--op-6)) var(--shdw);position:fixed;right:var(--btnbtn);bottom:0;transition:bottom var(--trans-base)}.restore-form h3{font-size:var(--txt-medium)}body:has(nav.fixed.bottom) .restore-form.restore-form:not([hidden]){bottom:var(--btn)}.restore-form .actions{display:flex;width:100%}.restore-form .actions button{min-height:var(--chip);font-size:var(--txt-x-small);width:100%}
\ No newline at end of file
+.field{width:100%;margin:.5em 0;padding:.5em 0}.field+.field{border-top:1px solid var(--base-200)}.field .wrapper{width:100%;position:relative}.field .validation{flex-shrink:0;max-width:0;transition:var(--trans-size)}.field.has-error .validation.error,.field.has-success .validation.success{max-width:var(--btn)}.field.has-error .error{color:var(--error)}.field.has-error input,.field.has-error select,.field.has-error textarea{border-color:var(--error);background-color:var(--errorBack)}.field.has-error input:focus,.field.has-error select:focus,.field.has-error textarea:focus{outline-color:var(--error);box-shadow:rgba(var(--error-rgb),.2)}.field.has-success .success{color:var(--success)}.validation-message{color:var(--errorText);font-size:var(--txt-small);margin-top:.25rem;display:block}.field[data-field=post_status] .wrapper{--justify:flex-start}.field[data-field=post_status] .btn+label{width:var(--chipchip);min-height:var(--chipchip);padding:0}.field[data-field=post_status] .btn+label:hover,.field[data-field=post_status] .btn:focus+label{color:var(--action-contrast)}.date-wrapper{position:relative;display:inline-block}input[type=date]{padding:8px 36px 8px 8px;border-radius:4px}input[type=date]::-webkit-calendar-picker-indicator{opacity:0;width:100%;height:100%;position:absolute;top:0;left:0;cursor:pointer}input[type=date]+.icon{--w:20px;position:absolute;right:10px;top:50%;transform:translateY(-50%);pointer-events:none}input:is([type=time],[type=datetime-local],[type=date]){padding:.5rem;border:1px solid var(--contrast-200);border-radius:4px;font-size:14px;min-width:180px;background:var(--base);color:var(--contrast);cursor:pointer}.date-wrapper input[type=date]:focus,.datetime-wrapper input[type=datetime-local]:focus,.time-wrapper input[type=time]:focus,.wrapper input:is([type=time],[type=datetime-local],[type=date]):focus{border-color:var(--action-0);box-shadow:0 0 0 2px rgba(var(--action-0),.1)}.date-wrapper .icon,.datetime-wrapper .icon,.time-wrapper .icon,.wrapper .icon{width:18px;height:18px;background-color:var(--contrast);opacity:.7}.quantity{margin:0;display:inline-flex;width:fit-content;align-items:center;justify-content:center;border:1px solid transparent;border-radius:4px;position:relative}.quantity:focus-within{border-color:var(--action-0)}.quantity label{margin:0;font-size:var(--txt-small)}.quantity button{background:var(--base);padding:0;width:var(--chip_);height:var(--chip_);min-height:0;z-index:0;position:relative;border:1px solid var(--base-200);color:var(--contrast-200)}.quantity button:hover:not(:disabled){color:var(--action-0);border-color:var(--action-0);background-color:var(--base)}.quantity button:active:not(:disabled){background-color:var(--action-0);color:var(--light-0);transform:scale(.95)}.quantity button:disabled{opacity:.5;cursor:not-allowed}.quantity input[type=number]{z-index:1;border:1px solid var(--base-200);background:var(--base);text-align:center;font-size:1.1rem;width:60px;height:48px;margin:0;padding:0!important;appearance:textfield}.quantity input[type=number]::-webkit-inner-spin-button,.quantity input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.quantity input[type=number]:focus{background-color:var(--base-50)}.quantity button.increase{left:-2px;border-radius:0 4px 4px 0}.quantity button.decrease{right:-2px;border-radius:4px 0 0 4px}details.uploader .file-upload-container{margin:1rem 0;max-width:100%}.field.upload{position:relative}.field.upload .progress{display:none}.field.upload.uploading .progress{display:block}.field.upload .actions{position:absolute;top:0;right:0}.empty-group,.file-upload-wrapper,.preview-wrap .item-grid{border:2px dashed var(--action-0);border-radius:4px;padding:2rem;text-align:center;transition:all .3s ease;background:rgba(var(--action-0),var(--op-1));position:relative;cursor:pointer;user-select:none}.file-upload-wrapper{max-width:var(--content);margin:1rem auto}.file-upload-wrapper h2{margin:0;font-size:var(--txt-large)}.dragover,.empty-group:hover,.file-upload-wrapper:hover,.preview-wrap .item-grid:hover{background:rgba(var(--action-0),var(--op-2));border-color:var(--action-0)}.preview-wrap:has(.item-grid:empty) .selection-controls{display:none}.preview-wrap .item-grid{min-height:20vh}.preview-wrap .item-grid:empty::before{content:'Unsorted images become their own posts.';display:block}.file-upload-wrapper input[type=file]{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer}.empty-group p,.file-upload-text{margin:0}.empty-group p strong,.file-upload-text strong{color:var(--action-0);text-decoration:underline}.item-grid.groups{grid-template-columns:repeat(1,1fr)}.item-grid.group{margin-bottom:0}.item-grid:is(.restore,.group,.preview) .item{display:block;--w:1.1em}.item-grid:is(.restore,.group,.preview) button{padding:.25rem .5rem}.item-grid:is(.restore,.group,.preview) .preview>input[type=checkbox]:not(.label-button)+label{padding-left:0;margin:0}.item-grid:is(.restore,.group,.preview) .item .item-actions{position:absolute;top:0;right:0;left:var(--chipchip)}.item-grid:is(.restore,.group,.preview) summary{padding:.5rem}.item-grid:is(.restore,.group,.preview):has([type=checkbox]:checked){padding:.5rem;background-color:rgba(var(--action-0),var(--op-4));opacity:1}.item-grid:is(.restore,.group,.preview):has([type=checkbox]:checked) img{filter:none}.item-grid:is(.restore,.group,.preview):has([type=checkbox]:checked) .item img{filter:var(--filter)}.item-grid.preview summary span,.item-grid:is(.restore,.group,.preview):has([type=checkbox]:checked) details{display:none}[type=radio].featured:checked+label .icon-star,[type=radio].featured:not(:checked)+label .icon-star-fi{display:none}[type=radio].featured:checked+label .icon-star-fi,[type=radio].featured:not(:checked)+label .icon-star{display:inline-block}.item:is(.restore,.upload){border-radius:var(--radius);aspect-ratio:unset;overflow:hidden;background:var(--base);border:1px solid var(--base-200)}.item:is(.restore,.upload) [for=select-item]{aspect-ratio:1}.item.upload:has(details[open]){grid-column:1/-1;padding:.5rem 10%;margin:1rem 0;background-color:transparent;border:2px dashed var(--action-200)}.item.upload:has(details[open]) details[open]{background-color:transparent}.item:is(.restore,.upload) img{transform:scale(1);transition:transform var(--trans-base)}.item:is(.upload,.restore):hover img{transform:scale(1.02)}.upload-group{padding:5px;border-radius:var(--radius);background-color:rgba(var(--action-0),var(--op-1))}.upload-group .selected .field{margin:0}.upload-group .selection-actions button{aspect-ratio:unset}.submit-uploads{position:fixed;bottom:0;left:var(--btn_);z-index:var(--z-6);height:var(--btn);box-shadow:rgba(var(--base),var(--op-45)) var(--shdw);border-radius:var(--radius);animation:pulse-color 5s infinite;animation-delay:1s;background-color:var(--action-0);color:var(--action-contrast)}.submit-uploads:hover{background-color:var(--base-200);color:var(--contrast-200)}.empty-group{order:-1;grid-column:1/-1;padding:20px;border-radius:var(--radius);margin:10px 0;cursor:pointer;transition:all var(--trans-base);text-align:center;background-color:rgba(var(--action-0),var(--op-1))}.group-display:not([hidden])~.file-upload-container{display:none}.dragging,.upload.item.dragging{opacity:.7;transform:scale(.95) rotate(3deg);z-index:var(--z-7);box-shadow:0 8px 25px rgba(var(--contrast),var(--op-2))}.dragover{background:rgba(var(--action-0),var(--op-3))!important;border-color:var(--action-0)!important;transform:scale(1.05);animation:drop-pulse .8s infinite ease-in-out}.drag-preview{position:fixed;z-index:var(--z-9);width:fit-content;overflow:visible;pointer-events:none;opacity:.9;transform:scale(1.05);transition:transform .2s ease}.drag-preview .drag-items{width:max-content;height:max-content;position:relative}.drag-preview .drag-items .dragi-item{width:120px;height:120px;position:absolute;top:0;left:0;background:var(--base);border-radius:var(--radius-outer);box-shadow:rgba(var(--base),var(--op-45)) var(--shdw)}.drag-preview .drag-items .drag-item:nth-child(1){transform:rotate(-3deg);z-index:3}.drag-preview .drag-items .drag-item:nth-child(2){left:8px;top:-4px;transform:rotate(4deg);z-index:2;transition-delay:30ms}.drag-preview .drag-items .drag-item:nth-child(3){left:-6px;top:-8px;transform:rotate(-5deg);z-index:1;transition-delay:60ms}.drag-preview .drag-items .drag-item:nth-child(4){left:12px;top:-12px;transform:rotate(3deg);z-index:0;transition-delay:90ms}.drag-preview .drag-items .drag-item:nth-child(n+5){left:-10px;top:-16px;transform:rotate(-4deg);z-index:0;opacity:.8}.drag-preview .drag-items img,.drag-preview .drag-items video{width:100%;height:100%;object-fit:cover;display:block}.drag-preview .drag-count{position:absolute;top:-8px;right:-8px;background:var(--base-200);color:var(--contrast);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;box-shadow:rgba(var(--base),var(--op-45)) var(--shdw);z-index:var(--z-3)}.item.dragging{opacity:.5;transform:scale(.95);filter:grayscale(50%);transition:opacity .2s ease,transform .2s ease,filter .2s ease}@keyframes drop-pulse{0%,100%{background-color:rgba(var(--action-0),var(--op-3));transform:scale(1.02)}50%{background-color:var(rgba(var(--action-0),var(--op-4)));transform:scale(1.04)}}.selection-actions{display:flex;gap:.25rem}@media (max-width:767px){body:not(.uploading):has(.group-display:not([hidden])){overflow:hidden}body:not(.uploading):has(.group-display:not([hidden])) .qtoggle{z-index:var(--z-1)}.group-display.group-display{position:fixed;top:var(--btn);bottom:var(--btn);left:0;right:0;max-height:var(--maxHeight);overflow:hidden;z-index:var(--z-6);width:calc(100% - 1rem);height:calc(100% - 1rem);padding:0 0 3rem;--justify:flex-start;--align:flex-start;--gap:0}.group-display::before{content:'';display:block;z-index:-1;top:-.5rem;bottom:-.5rem;left:-.5rem;right:-.5rem;position:absolute;background-color:rgba(var(--base),var(--op-6));filter:blur(5px)}.group-display .preview-wrap,.group-display .sidebar{--wrap:nowrap;height:50%;overflow:hidden auto;position:relative;padding:.5rem}.group-display .preview-wrap{top:0}.group-display .preview-wrap .selected{display:flex;justify-content:space-between;align-items:center}.group-display .sidebar{bottom:0;flex-wrap:nowrap;overflow:hidden auto;background-color:var(--contrast-200);color:var(--base)}.group-display .sidebar>.hint{color:var(--contrast)}.group-display .sidebar .header{display:none}.group-display .preview-actions{top:0;flex-shrink:0}.group-display .preview-wrap>.hint,.group-display .sidebar>.hint{bottom:0;margin:0;text-align:center}.group-display .preview-actions,.group-display .preview-wrap>.hint,.group-display .sidebar>.hint{position:absolute;left:0;right:0;background-color:rgba(var(--base),var(--op-6));z-index:var(--z-3);box-shadow:rgba(var(--base),var(--op-45)) var(--shdw)}.group-display .item-grid{height:100%;overflow:hidden auto;grid-template-columns:repeat(3,1fr);padding:2rem 0}.group-display .sidebar>.item-grid{grid-template-columns:repeat(1,1fr);gap:1rem;padding:0}.group-display .sidebar .empty-group{order:0;position:sticky;height:fit-content;top:0;z-index:var(--z-3);background-color:rgba(var(--action-0),var(--op-6))}.group-display .sidebar .upload-group{order:1}.group-display .sidebar .empty-group p{margin:0}.group-display .field,.group-display .field label{margin:0;padding:0}.group-display .sidebar h4{margin:.25rem}.group-display .item{width:100%;height:max-content}.submit-uploads{bottom:var(--btn);left:0;right:0;width:100%;height:3rem}body.uploading .group-display.group-display{position:relative;top:unset;bottom:unset;right:unset;left:unset}}@media (min-width:768px){.group-display.group-display{--wrap:nowrap;--dir:row;--gap:1rem;--align:flex-start}.group-display .preview-wrap,.group-display .sidebar{--justify:flex-start;--wrap:nowrap;max-height:calc(100vh - var(--btnbtn));overflow:hidden auto}.group-display .preview-wrap,.group-display .sidebar{width:50%}.preview-actions,.preview-wrap .hint{position:sticky;z-index:var(--z-3);box-shadow:rgba(var(--base),var(--op-45)) var(--shdw);background-color:var(--base);width:100%}.preview-actions{top:0;left:0;right:0}.preview-actions .field{margin:0}.preview-wrap .hint,.sidebar>.hint{bottom:-1rem;padding-bottom:1rem;margin:0;left:0;right:0;text-align:center}}.item-grid.restore{grid-template-columns:repeat(1,1fr)}.editor-container .ql-toolbar{display:flex;background-color:var(--base-50);justify-content:flex-start;flex-wrap:wrap;padding:.25rem;gap:.5rem 1rem;border-top-left-radius:var(--radius);border-top-right-radius:var(--radius);border-bottom:4px solid var(--base-50)}.ql-toolbar button{min-height:0;padding:.5rem}.ql-toolbar .ql-formats{display:flex;gap:.25rem}.editor-container .ql-container{--padding:1rem;background-color:var(--base);border-bottom-left-radius:var(--radius);border-bottom-right-radius:var(--radius);height:fit-content;padding:2px;border:1px solid var(--base-200)}.editor-container .ql-container .ql-editor{padding:var(--padding);width:100%;height:100%}.ql-editor img{max-width:50%;height:auto}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-hidden{display:none}.ql-tooltip{position:absolute;transform:translateY(10px);background-color:var(--base-100);border:1px solid var(--base);box-shadow:0 0 5px rgba(var(--base),var(--op-6));color:var(--contrast);padding:5px 12px;white-space:nowrap}[data-type=single] .item-grid{display:flex}.repeater-row details summary::after{margin-left:0}.repeater-row details summary button{margin-left:auto}.repeater .field-input-wrapper{flex-direction:column}.repeater .repeater-items{width:100%}.add-repeater-row,.remove-row{margin-left:auto;min-height:0;height:var(--chipchip);background-color:var(--action-0)}.field.tag-list .row{margin-bottom:1rem}.field.tag-list .row .field{flex:1;min-width:150px;margin:0}.field.tag-list .tag .add-tag-item{flex-shrink:0;white-space:nowrap;margin-top:calc(var(--txt-medium) + 1rem)}.field.tag-list .tag-items{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;min-height:2rem}.field.tag-list .tag-item{background:var(--base-200);padding:.4rem .75rem;border-radius:4px;display:inline-flex;align-items:center;gap:.5rem;font-size:.9rem;line-height:1.2}.field.tag-list .tag-item:hover{background:var(--base-100)}.field.tag-list .tag-label{max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.field.tag-list .remove-tag{min-height:0;padding:.25rem;color:var(--contrast);transition:transform .2s;box-shadow:none}.field.tag-list .remove-tag:hover{transform:scale(1.2)}@media (max-width:768px){.field.tag-list .tag{flex-direction:column;align-items:stretch}.field.tag-list .tag .field{min-width:100%}}.form-progress{padding:0 1rem}.form-progress .progress{background:var(--base-100);border-radius:var(--radius);padding:1rem}.form-progress .bar{height:6px;background:var(--base-200);border-radius:3px;overflow:hidden;margin-bottom:.5rem}.form-progress .fill{height:100%;background:linear-gradient(90deg,var(--action-0),var(--action-200));width:0%;transition:width .4s ease;border-radius:3px}.form-progress .step-text{font-size:var(--txt-small);font-weight:600;color:var(--contrast-200)}form nav.tabs{position:relative;top:0;left:0;right:0;padding:1rem 0;gap:0;z-index:0}form nav.tabs button{position:relative;background:0 0;border:none;padding:.5rem 1rem .5rem 3rem;z-index:1}form nav.tabs .step-number{width:2.5rem;height:100%;border-radius:50% 0 0 50%;position:absolute;left:0;top:0;background:var(--base-200);color:var(--contrast-50);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:var(--txt-small);border:3px solid var(--base)}form nav.tabs button.pending .step-number{background:var(--base-100);color:var(--contrast-200)}form nav.tabs button.active .step-number,form nav.tabs button.current .step-number{background:var(--action-0);color:var(--action-contrast);border-color:var(--action-200)}form nav.tabs button.completed .step-number{background:var(--successBack);color:var(--successBack);border-color:var(--successText)}form nav.tabs button.completed .step-number::before{content:'✓';font-size:1.2rem;color:var(--successText);position:absolute}form nav.tabs button.completed h2{color:var(--contrast-200)}.step-navigation{margin-top:2rem;padding-top:2rem;border-top:1px solid var(--base-200);gap:1rem}.step-navigation .prev-step{background:var(--base-100)}.step-navigation .next-step,.step-navigation button[type=submit]{margin-left:auto}@media (max-width:768px){form nav.tabs button{min-width:80px;font-size:var(--txt-small)}form nav.tabs button h2{font-size:var(--txt-small)}form{--step-size:2rem}}.field input.error,.field select.error,.field textarea.error{border-color:var(--errorBack)}.error-message{color:var(--errorText);font-size:var(--txt-small);margin-top:.25rem;display:block}.form-summary{padding:2rem;border-radius:8px;margin-top:2rem;border:2px dashed var(--contrast-200)}.form-summary .message{margin-bottom:2rem}.form-summary .result+.result{position:relative;margin-top:1.5rem;padding-top:1.5rem}.form-summary .result+.result::before{position:absolute;top:0;left:16.5%;content:'';width:67%;height:1px;border-bottom:1px solid var(--base-200)}.form-summary h2{margin:1rem 0}.form-summary h4{background-color:var(--base-100);padding:.5rem 2rem;position:relative;left:-2rem;color:var(--contrast-200);font-size:.875rem;text-transform:uppercase;letter-spacing:.05em;margin-bottom:.75rem}.form-summary p{color:var(--text);margin:0}.group-summary,.repeater-summary{background:var(--base-100);padding:1rem;border-radius:4px;margin-top:.5rem}.repeater-row{margin-bottom:1rem}.repeater-row:last-child{margin-bottom:0}.selected-item{border:1px solid var(--base-200);border-radius:var(--radius);font-size:var(--txt-x-small);background-color:var(--base);padding:.25rem .5rem}.selected-item button{--w:.5em;min-height:1em;width:1em;padding:0}.selector .auto-wrapper,.selector .selected-items{flex:1;width:100%}.fstatus{z-index:var(--z-5);background-color:rgba(var(--base),var(--op-6));border-radius:var(--radius);padding:0 .5rem;position:fixed;right:.5rem;top:var(--btnbtn);--w:1em;box-shadow:rgba(var(--base),var(--op-6)) var(--shdw);--wrap:nowrap;--gap:1rem}.fstatus .spinner{display:none}.fstatus.loading .spinner{display:inline-block}.fstatus p{margin:0;padding:.25rem}.restore-uploads .item-grid.group .field.group,.restore-uploads .upload-group .selection-actions{display:none}.upload-group .item-grid.group{grid-template-columns:repeat(2,1fr)}.restore-uploads .item-grid.group{grid-template-columns:repeat(3,1fr)}fieldset{width:100%;border-color:var(--base-200)}.restore-form.restore-form[hidden]{display:block!important;position:fixed;bottom:var(--offScreen);right:var(--btnbtn);transition:bottom var(--trans-base);transition-duration:2s}.restore-form.restore-form:not([hidden]){width:50vw;padding:1rem;z-index:var(--z-7);background-color:rgba(var(--base),var(--op-6));border-radius:var(--radius);box-shadow:rgba(var(--action-0),var(--op-6)) var(--shdw);position:fixed;right:var(--btnbtn);bottom:0;transition:bottom var(--trans-base)}.restore-form h3{font-size:var(--txt-medium)}body:has(nav.fixed.bottom) .restore-form.restore-form:not([hidden]){bottom:var(--btn)}.restore-form .actions{display:flex;width:100%}.restore-form .actions button{min-height:var(--chip);font-size:var(--txt-x-small);width:100%}
\ No newline at end of file
diff --git a/assets/css/nav.min.css b/assets/css/nav.min.css
index 8e31743..6100b24 100644
--- a/assets/css/nav.min.css
+++ b/assets/css/nav.min.css
@@ -1 +1 @@
-nav,nav ol,nav ul{--padding:0 1rem;--wrap:nowrap;font-family:var(--heading)}nav,nav a,nav li,nav ol,nav ul,ul.socials{display:flex;flex-direction:var(--dir,row);justify-content:var(--justify,flex-start);align-items:var(--align,center);gap:var(--gap,0);flex-wrap:var(--wrap,nowrap);height:var(--btn,3rem);max-width:100%;padding:0;margin:0}nav.col,nav.col ul{height:max-content}nav>ul{width:100%;overflow:auto hidden}nav li{width:max-content;--justify:center;max-inline-size:none;padding:0;list-style:none}nav.fill li{width:100%}nav a,nav button{--justify:center;width:100%;white-space:nowrap;text-transform:uppercase;border-radius:0;background-color:transparent;text-decoration:none}nav a{padding:var(--padding)}nav .toggle{aspect-ratio:1;border:1px solid var(--base);color:var(--contrast)}nav .current a,nav a.current,nav a:focus,nav a:focus:visited,nav button:focus{background-color:var(--action-0);color:var(--action-contrast)}.toggle .icon-caret-down{transform:rotate(0);transition:transform var(--trans-base)}.open>.row>.toggle .icon-caret-down,.open>.toggle .icon-caret-down{transform:rotate(900deg)}.has-submenu{position:relative}ul.submenu{--dir:column;height:max-content;position:absolute;top:100%;right:0;max-height:0;transform:scaleY(0);transform-origin:top;width:100%;min-width:max-content;background-color:rgba(var(--base-rgb),var(--op-3));border:2px solid rgba(var(--base-rgb),var(--op-3));transition:max-height var(--trans-base),transform var(--trans-base);box-shadow:var(--shdw-none);overflow:hidden}.submenu li{background-color:rgba(var(--base-rgb),var(--op-6));border:1px solid var(--base-50)}.submenu a{height:var(--chipchip)}.open>ul.submenu{transform:scaleY(1);max-height:1000%;box-shadow:rgba(var(--base-rgb),var(--op-45)) var(--shdw)}.screen-reader-text{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}nav a:focus:not(:focus-visible){outline:0}nav a:focus-visible{outline:1px solid var(--action-0);outline-offset:1px}nav.always{overflow:visible;transition:width var(--trans-base);width:max-content}nav.always>ul{--dir:column;--align:center;--justify:flex-end;--gap:0;height:100vh;max-height:none;position:fixed;right:-300vw;bottom:0;width:100vw;padding:var(--btn) 0;overflow:hidden auto;transition:right var(--trans-base)}nav.always.open>ul{right:0}nav.always li{width:100%}nav.always.fixed{width:var(--btn);height:var(--btn);bottom:0;right:0;overflow:hidden}nav.always.fixed .toggle.main{background-color:var(--base)}nav.always.fixed .toggle.main:focus,nav.always.fixed .toggle.main:hover{background-color:var(--action-0);color:var(--action-contrast)}nav.mobile .toggle.main{width:var(--btn);transition:width var(--trans-base)}nav.mobile .icon-list,nav.mobile .icon-x{--w:32px}nav.mobile .icon-x,nav.mobile.open .icon-list{display:none}nav.mobile .icon-list,nav.mobile.open .icon-x{display:block}nav.mobile.open>ul{--dir:column;z-index:var(--z-9);background-color:rgba(var(--base-rgb),var(--op-6));width:100vw;height:100vh;overflow:hidden auto;right:0;bottom:0;position:fixed;padding:var(--btn) 0}nav.always>ul::before,nav.mobile.open>ul::before{content:'';z-index:-1;position:absolute;inset:0;filter:blur(5px)}nav.always.open .main.toggle,nav.mobile.open .main.toggle{position:fixed;bottom:0;left:0;width:100vw;z-index:var(--z-10);aspect-ratio:unset}nav.always>ul,nav.always>ul:before,nav.mobile.open>ul,nav.mobile.open>ul::before{background-color:rgba(var(--base-rgb),var(--op-6))}@media (max-width:767px){nav.col{height:var(--btn)}nav.mobile>ul{--dir:column;--align:center;--justify:flex-end;--gap:0;height:100%;max-height:none;position:relative;right:-300vw;width:100vw;padding:var(--btn) 0 0;overflow:hidden auto}nav.mobile.open>ul{right:0}}@media (min-width:768px){nav.mobile:not(.always) .toggle.main{display:none}}nav#breadcrumbs{height:max-content;--wrap:wrap;--gap:0;width:max-content;max-width:var(--full);position:absolute;background-color:rgba(var(--base-rgb),var(--op-4));font-size:var(--txt-x-small);padding:.125em;z-index:var(--z-5)}nav#breadcrumbs ol{height:max-content;--wrap:wrap}nav#breadcrumbs li{width:max-content;height:var(--chip);--wrap:nowrap}nav#breadcrumbs li::after{content:'/';color:var(--contrast-200);padding:0 .25rem}nav#breadcrumbs li:last-of-type::after{display:none}nav#breadcrumbs a{height:var(--chip)}nav#breadcrumbs a,nav#breadcrumbs span{padding:0 .125rem;color:var(--contrast);text-transform:none}nav#breadcrumbs a:focus{background-color:transparent;color:var(--action-0)}nav.fixed{position:fixed;box-shadow:rgba(var(--base-rgb),var(--op-45)) var(--shdw);z-index:var(--z-9)}nav.fixed.bottom{left:0;bottom:0;width:calc(100% - var(--btn))}nav.fixed:not(.always) ul{--justify:space-between;width:100%;background-color:var(--base);padding:0 .25rem}nav.fixed:not(.always) li{flex:1}nav.fixed a{--align:center;--gap:1rem;--w:var(--chip_);color:var(--contrast);font-size:var(--txt-x-small)}@media (min-width:768px){nav.fixed a{font-size:var(--txt-medium)}}nav.on-this-page{--justify:space-between;position:fixed;bottom:0;left:0;width:100vw;z-index:var(--z-5);background-color:rgba(var(--base-rgb),var(--op-45));max-width:none}body:has(nav.fixed) nav.on-this-page{bottom:var(--btn)}nav.on-this-page button{order:3;padding:0 1rem;width:max-content;aspect-ratio:unset}nav.on-this-page.open button{order:0}nav.on-this-page ul{width:100%;--gap:0}nav.on-this-page a{padding:0}nav.on-this-page .active a{background-color:rgba(var(--base-rgb),var(--op-6));color:var(--action-contrast)}nav.on-this-page #back-to-top span{display:none}nav.on-this-page .active a{background-color:var(--action-0);color:var(--action-contrast)}nav.letters,nav.letters a,nav.letters li,nav.letters ul{height:var(--chip)}nav.letters li{max-width:calc(7.69% - 2px)}nav.letters ul{--wrap:wrap}@media (min-width:768px){nav.letters,nav.letters ul{height:var(--chip)}nav.letters ul{--wrap:nowrap}nav.letters li{max-width:none}nav.letters a{padding:.25rem .66rem}}nav.index{--justify:space-between;--padding:0;background-color:rgba(var(--base-rgb),var(--op-6))}nav.index ul{width:100%}nav.index li{flex-shrink:0;transform:scaleX(0);max-width:0;overflow:hidden}nav.index li.active,nav.index li.adj{transform:scaleX(1);width:calc(100% - var(--btn_));flex-shrink:1;max-width:none}nav.index li:first-of-type{flex-shrink:1;transform:scaleX(1);order:9999;width:var(--btn);height:var(--btn);max-width:none}@media (max-width:767px){.index li.adj{transform:scaleX(0);max-width:0}}nav.index a{border-bottom:4px solid transparent}nav.index .active a{border-color:var(--action-0);color:var(--contrast)}nav.index.open{--dir:column-reverse;height:var(--maxHeight);width:100%;--align:flex-end;background-color:rgba(var(--base-rgb),var(--op-6));backdrop-filter:blur(5px);z-index:var(--z-10)}nav.index.open li{width:100%;height:var(--btn);max-width:100%!important;transform:scaleX(1);overflow:visible}nav.index.open a{--justify:flex-end;padding:0 2rem 0 0;background-color:transparent}nav.condensed,nav.condensed a,nav.condensed li,nav.condensed ul{height:max-content;width:max-content;--wrap:wrap;min-height:var(--chip)}.condensed ul{--justify:center;--dir:row}nav.condensed{--gap:0 .25rem;width:100%;--justify:center}nav.condensed li+li::before{content:'·';padding:0 .25em}nav.condensed a{font-size:var(--txt-x-small);padding:0 .25rem;text-transform:none;border-bottom:2px solid transparent}nav .current a,nav a.current,nav a:focus,nav a:focus:visited,nav button:focus{background-color:transparent;color:var(--contrast);border-color:var(--action-0)}ul.socials{--dir:row;height:max-content;--gap:.5rem;--justify:flex-end;--wrap:nowrap;overflow:auto hidden;touch-action:pan-x;width:100%}ul.socials li{list-style:none}.always ul.socials{width:100vw;--justify:stretch}.always ul.socials li{flex:1;--justify:center;--align:center}.always ul.socials a{display:inline-flex}ul.socials a{display:inline-block;font-size:var(--txt-x-small);padding:.25rem .5rem;max-width:none}ul.socials .icon{margin:0}ul.socials .icon+span:not(.screen-reader-text){margin-left:.5rem}nav.tabs{padding-bottom:2px;touch-action:pan-x pan-y;--wrap:nowrap;overflow:auto hidden}nav.tabs button.active{cursor:default}nav.tabs button{font-family:var(--heading);font-size:var(--txt-x-small);border-bottom:4px solid transparent}nav.tabs button.active,nav.tabs button.active:hover{background-color:var(--action-0);color:var(--action-contrast);border-color:var(--base)}.tab-content nav.tabs button{height:var(--chip_);padding:.25rem .75rem;min-height:0}.tab-content h2{margin:0 0 .5rem}.tab-content nav.tabs{height:max-content;background-color:var(--base);--gap:0}.tab-content .tab-content nav.tabs{background-color:var(--base-100)}.tab-content .tab-content .tab-content nav.tabs{background-color:var(--base-200)}.tab-content nav.tabs button.active h2{color:var(--action-0)}nav.menu a{padding:.5rem .66rem}nav.share{height:max-content;margin:1rem 0}nav.share ul{overflow:visible}nav.share h4{display:inline-block;width:max-content;margin:.25rem .5rem .25rem 0;font-size:var(--txt-x-small)}.wp-site-blocks>header,body>header{--dir:row;--justify:space-between;position:sticky;top:0;left:0;right:0;height:var(--btn);width:100vw;display:flex;align-items:var(--align,center);justify-content:var(--justify,space-between);padding:0 .5rem;background-color:var(--base);box-shadow:rgba(var(--base-rgb),var(--op-45)) var(--shdw);z-index:var(--z-9)}.wp-site-blocks>header img{width:var(--btn)}.dashboard-nav{width:100%}nav.filters{--dir:row;overflow:auto hidden}nav.filters .filter{width:auto;padding:.25rem .75rem}nav.term-navigation:has([hidden]){display:none}nav.pagination{width:100%}nav.pagination>a{min-width:var(--chipchip)}nav.pagination>ul{margin:0 auto}nav.pagination:not(:has(a+ul)){margin-left:var(--chipchip)}nav.pagination:not(:has(ul+a)){margin-right:var(--chipchip)}.pagination.condensed li+li::before{display:none}.pagination li.current{width:var(--chip_);height:var(--chip_);background-color:var(--action-0);border-radius:var(--radius);line-height:1}.pagination.condensed a{font-size:var(--txt-medium);width:var(--chip_);height:var(--chip_)}
\ No newline at end of file
+nav,nav ol,nav ul{--padding:0 1rem;--wrap:nowrap;font-family:var(--heading)}nav,nav a,nav li,nav ol,nav ul,ul.socials{display:flex;flex-direction:var(--dir,row);justify-content:var(--justify,flex-start);align-items:var(--align,center);gap:var(--gap,0);flex-wrap:var(--wrap,nowrap);height:var(--btn,3rem);max-width:100%;padding:0;margin:0}nav.col,nav.col ul{height:max-content}nav>ul{width:100%;overflow:auto hidden}nav li{width:max-content;--justify:center;max-inline-size:none;padding:0;list-style:none}nav.fill li{width:100%}nav a,nav button{--justify:center;width:100%;white-space:nowrap;text-transform:uppercase;border-radius:0;background-color:transparent;text-decoration:none}nav a{padding:var(--padding)}nav .toggle{aspect-ratio:1;border:1px solid rgb(var(--base));color:rgb(var(--contrast))}nav .current a,nav a.current,nav a:focus,nav a:focus:visited,nav button:focus{background-color:rgb(var(--action-0));color:var(--action-contrast)}.toggle .icon-caret-down{transform:rotate(0);transition:transform var(--trans-base)}.open>.row>.toggle .icon-caret-down,.open>.toggle .icon-caret-down{transform:rotate(900deg)}.has-submenu{position:relative}ul.submenu{--dir:column;height:max-content;position:absolute;top:100%;right:0;max-height:0;transform:scaleY(0);transform-origin:top;width:100%;min-width:max-content;background-color:rgba(var(--base),var(--op-3));border:2px solid rgba(var(--base),var(--op-3));transition:max-height var(--trans-base),transform var(--trans-base);box-shadow:var(--shdw-none);overflow:hidden}.submenu li{background-color:rgba(var(--base),var(--op-6));border:1px solid rgb(var(--base-50))}.submenu a{height:var(--chipchip)}.open>ul.submenu{transform:scaleY(1);max-height:1000%;box-shadow:rgba(var(--base),var(--op-45)) var(--shdw)}.screen-reader-text{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}nav a:focus:not(:focus-visible){outline:0}nav a:focus-visible{outline:1px solid rgb(var(--action-0));outline-offset:1px}nav.always{overflow:visible;transition:width var(--trans-base);width:max-content}nav.always>ul{--dir:column;--align:center;--justify:flex-end;--gap:0;height:100vh;max-height:none;position:fixed;right:-300vw;bottom:0;width:100vw;padding:var(--btn) 0;overflow:hidden auto;transition:right var(--trans-base)}nav.always.open>ul{right:0}nav.always li{width:100%}nav.always.fixed{width:var(--btn);height:var(--btn);bottom:0;right:0;overflow:hidden}nav.always.fixed .toggle.main{background-color:rgb(var(--base))}nav.always.fixed .toggle.main:focus,nav.always.fixed .toggle.main:hover{background-color:rgb(var(--action-0));color:var(--action-contrast)}nav.mobile .toggle.main{width:var(--btn);transition:width var(--trans-base)}nav.mobile .icon-list,nav.mobile .icon-x{--w:32px}nav.mobile .icon-x,nav.mobile.open .icon-list{display:none}nav.mobile .icon-list,nav.mobile.open .icon-x{display:block}nav.mobile.open>ul{--dir:column;z-index:var(--z-9);background-color:rgba(var(--base),var(--op-6));width:100vw;height:100vh;overflow:hidden auto;right:0;bottom:0;position:fixed;padding:var(--btn) 0}nav.always>ul::before,nav.mobile.open>ul::before{content:'';z-index:-1;position:absolute;inset:0;filter:blur(5px)}nav.always.open .main.toggle,nav.mobile.open .main.toggle{position:fixed;bottom:0;left:0;width:100vw;z-index:var(--z-10);aspect-ratio:unset}nav.always>ul,nav.always>ul:before,nav.mobile.open>ul,nav.mobile.open>ul::before{background-color:rgba(var(--base),var(--op-6))}@media (max-width:767px){nav.col{height:var(--btn)}nav.mobile>ul{--dir:column;--align:center;--justify:flex-end;--gap:0;height:100%;max-height:none;position:relative;right:-300vw;width:100vw;padding:var(--btn) 0 0;overflow:hidden auto}nav.mobile.open>ul{right:0}}@media (min-width:768px){nav.mobile:not(.always) .toggle.main{display:none}}nav#breadcrumbs{height:max-content;--wrap:wrap;--gap:0;width:max-content;max-width:var(--full);position:absolute;background-color:rgba(var(--base),var(--op-4));font-size:var(--txt-x-small);padding:.125em;z-index:var(--z-5)}nav#breadcrumbs ol{height:max-content;--wrap:wrap}nav#breadcrumbs li{width:max-content;height:var(--chip);--wrap:nowrap}nav#breadcrumbs li::after{content:'/';color:rgb(var(--contrast-200));padding:0 .25rem}nav#breadcrumbs li:last-of-type::after{display:none}nav#breadcrumbs a{height:var(--chip)}nav#breadcrumbs a,nav#breadcrumbs span{padding:0 .125rem;color:rgb(var(--contrast));text-transform:none}nav#breadcrumbs a:focus{background-color:transparent;color:rgb(var(--action-0))}nav.fixed{position:fixed;box-shadow:rgba(var(--base),var(--op-45)) var(--shdw);z-index:var(--z-9)}nav.fixed.bottom{left:0;bottom:0;width:calc(100% - var(--btn))}nav.fixed:not(.always) ul{--justify:space-between;width:100%;background-color:rgb(var(--base));padding:0 .25rem}nav.fixed:not(.always) li{flex:1}nav.fixed a{--align:center;--gap:1rem;--w:var(--chip_);color:rgb(var(--contrast));font-size:var(--txt-x-small)}@media (min-width:768px){nav.fixed a{font-size:var(--txt-medium)}}nav.on-this-page{--justify:space-between;position:fixed;bottom:0;left:0;width:100vw;z-index:var(--z-5);background-color:rgba(var(--base),var(--op-45));max-width:none}body:has(nav.fixed) nav.on-this-page{bottom:var(--btn)}nav.on-this-page button{order:3;padding:0 1rem;width:max-content;aspect-ratio:unset}nav.on-this-page.open button{order:0}nav.on-this-page ul{width:100%;--gap:0}nav.on-this-page a{padding:0}nav.on-this-page .active a{background-color:rgba(var(--base),var(--op-6));color:var(--action-contrast)}nav.on-this-page #back-to-top span{display:none}nav.on-this-page .active a{background-color:rgb(var(--action-0));color:var(--action-contrast)}nav.letters,nav.letters a,nav.letters li,nav.letters ul{height:var(--chip)}nav.letters li{max-width:calc(7.69% - 2px)}nav.letters ul{--wrap:wrap}@media (min-width:768px){nav.letters,nav.letters ul{height:var(--chip)}nav.letters ul{--wrap:nowrap}nav.letters li{max-width:none}nav.letters a{padding:.25rem .66rem}}nav.index{--justify:space-between;--padding:0;background-color:rgba(var(--base),var(--op-6))}nav.index ul{width:100%}nav.index li{flex-shrink:0;transform:scaleX(0);max-width:0;overflow:hidden}nav.index li.active,nav.index li.adj{transform:scaleX(1);width:calc(100% - var(--btn_));flex-shrink:1;max-width:none}nav.index li:first-of-type{flex-shrink:1;transform:scaleX(1);order:9999;width:var(--btn);height:var(--btn);max-width:none}@media (max-width:767px){.index li.adj{transform:scaleX(0);max-width:0}}nav.index a{border-bottom:4px solid transparent}nav.index .active a{border-color:rgb(var(--action-0));color:rgb(var(--contrast))}nav.index.open{--dir:column-reverse;height:var(--maxHeight);width:100%;--align:flex-end;background-color:rgba(var(--base),var(--op-6));backdrop-filter:blur(5px);z-index:var(--z-10)}nav.index.open li{width:100%;height:var(--btn);max-width:100%!important;transform:scaleX(1);overflow:visible}nav.index.open a{--justify:flex-end;padding:0 2rem 0 0;background-color:transparent}nav.condensed,nav.condensed a,nav.condensed li,nav.condensed ul{height:max-content;width:max-content;--wrap:wrap;min-height:var(--chip)}.condensed ul{--justify:center;--dir:row}nav.condensed{--gap:0 .25rem;width:100%;--justify:center}nav.condensed li+li::before{content:'·';padding:0 .25em}nav.condensed a{font-size:var(--txt-x-small);padding:0 .25rem;text-transform:none;border-bottom:2px solid transparent}nav .current a,nav a.current,nav a:focus,nav a:focus:visited,nav button:focus{background-color:transparent;color:rgb(var(--contrast));border-color:rgb(var(--action-0))}ul.socials{--dir:row;height:max-content;--gap:.5rem;--justify:flex-end;--wrap:nowrap;overflow:auto hidden;touch-action:pan-x;width:100%}ul.socials li{list-style:none}.always ul.socials{width:100vw;--justify:stretch}.always ul.socials li{flex:1;--justify:center;--align:center}.always ul.socials a{display:inline-flex}ul.socials a{display:inline-block;font-size:var(--txt-x-small);padding:.25rem .5rem;max-width:none}ul.socials .icon{margin:0}ul.socials .icon+span:not(.screen-reader-text){margin-left:.5rem}nav.tabs{padding-bottom:2px;touch-action:pan-x pan-y;--wrap:nowrap;overflow:auto hidden}nav.tabs button.active{cursor:default}nav.tabs button{font-family:var(--heading);font-size:var(--txt-x-small);border-bottom:4px solid transparent}nav.tabs button.active,nav.tabs button.active:hover{background-color:rgb(var(--action-0));color:var(--action-contrast);border-color:rgb(var(--base))}.tab-content nav.tabs button{height:var(--chip_);padding:.25rem .75rem;min-height:0}.tab-content h2{margin:0 0 .5rem}.tab-content nav.tabs{height:max-content;background-color:rgb(var(--base));--gap:0}.tab-content .tab-content nav.tabs{background-color:rgb(var(--base-100))}.tab-content .tab-content .tab-content nav.tabs{background-color:rgb(var(--base-200))}.tab-content nav.tabs button.active h2{color:rgb(var(--action-0))}nav.menu a{padding:.5rem .66rem}nav.share{height:max-content;margin:1rem 0}nav.share ul{overflow:visible}nav.share h4{display:inline-block;width:max-content;margin:.25rem .5rem .25rem 0;font-size:var(--txt-x-small)}.wp-site-blocks>header,body>header{--dir:row;--justify:space-between;position:sticky;top:0;left:0;right:0;height:var(--btn);width:100vw;display:flex;align-items:var(--align,center);justify-content:var(--justify,space-between);padding:0 .5rem;background-color:rgb(var(--base));box-shadow:rgba(var(--base),var(--op-45)) var(--shdw);z-index:var(--z-9)}.wp-site-blocks>header img{width:var(--btn)}.dashboard-nav{width:100%}nav.filters{--dir:row;overflow:auto hidden}nav.filters .filter{width:auto;padding:.25rem .75rem}nav.term-navigation:has([hidden]){display:none}nav.pagination{width:100%}nav.pagination>a{min-width:var(--chipchip)}nav.pagination>ul{margin:0 auto}nav.pagination:not(:has(a+ul)){margin-left:var(--chipchip)}nav.pagination:not(:has(ul+a)){margin-right:var(--chipchip)}.pagination.condensed li+li::before{display:none}.pagination li.current{width:var(--chip_);height:var(--chip_);background-color:rgb(var(--action-0));border-radius:var(--radius);line-height:1}.pagination.condensed a{font-size:var(--txt-medium);width:var(--chip_);height:var(--chip_)}
\ No newline at end of file
diff --git a/assets/js/concise/Gallery.js b/assets/js/concise/Gallery.js
index 4890b50..948ab0f 100644
--- a/assets/js/concise/Gallery.js
+++ b/assets/js/concise/Gallery.js
@@ -26,7 +26,7 @@
 		this.initModal();
 		this.initListeners();
 		this.initSubscribers();
-
+		console.log('Gallery loaded...');
 	}
 	/*********************************************************************
 	 ELEMENTS
@@ -193,17 +193,12 @@
 		// PINCH (two pointers)
 		if (this.activePointers.size === 2) {
 			const pts = [...this.activePointers.values()];
-			const dist = Math.hypot(
-				pts[0].x - pts[1].x,
-				pts[0].y - pts[1].y
-			);
+			const dist = Math.hypot(pts[0].x - pts[1].x, pts[0].y - pts[1].y);
+			const increment = this.pinchStartScale * (dist / this.pinchStartDist) - this.zoom.scale;
 
-			const newScale = this.pinchStartScale * (dist / this.pinchStartDist);
-			const increment = newScale - this.zoom.scale;
-
-			// Zoom centered (NO midpoint)
-			this.handleZoom(increment);
-
+			const midX = (pts[0].x + pts[1].x) / 2;  // ← anchor to finger midpoint
+			const midY = (pts[0].y + pts[1].y) / 2;
+			this.handleZoom(increment, midX, midY);
 			return;
 		}
 
@@ -216,35 +211,26 @@
 	}
 
 	onPointerUp(e) {
+		const last = this.activePointers.get(e.pointerId); // grab before delete
 		this.activePointers.delete(e.pointerId);
 
 		if (this.activePointers.size < 2) {
 			this.pinchStartDist = 0;
 		}
 
-		// Only check for swipe if we weren't panning and no more active pointers
-		if (!this.zoom.panning && this.activePointers.size === 0) {
-			// End of tap or swipe - detect swipe
-			this.swipe.endX = e.clientX;
-			this.swipe.endY = e.clientY;
-			const dx = this.swipe.endX - this.swipe.startX;
-			const dy = this.swipe.endY - this.swipe.startY;
+		if (this.zoom.scale <= 1 && !this.zoom.panning && this.activePointers.size === 0) {
+			const endX = last?.x ?? e.clientX; // use tracked position, fall back to event
+			const endY = last?.y ?? e.clientY;
+			const dx = endX - this.swipe.startX;
+			const dy = endY - this.swipe.startY;
 
-			if (Math.abs(dx) > this.zoom.threshold) {
-				if (dx > 0) {
-					console.log('Swipe right');
-					this.prevElement();
-				} else {
-					console.log('Swipe left');
-					this.nextElement();
-				}
+			if (Math.abs(dx) > this.zoom.threshold && Math.abs(dx) > Math.abs(dy)) {
+				dx > 0 ? this.prevElement() : this.nextElement();
 			}
 		}
 
-		// Reset panning state when all pointers are released
 		if (this.activePointers.size === 0) {
 			this.zoom.panning = false;
-			// Reset cursor based on zoom state
 			this.ui.gallery.image.style.cursor = this.zoom.scale > 1 ? 'grab' : 'default';
 		}
 	}
@@ -290,12 +276,19 @@
 	}
 
 	applyTransform() {
-		// this.clampPan();
+		this.clampPan();
 		const img = this.ui.gallery.image;
 		img.style.transform = `translate(${this.zoom.x}px, ${this.zoom.y}px) scale(${this.zoom.scale})`;
 		// Update cursor based on zoom level
 		img.style.cursor = this.zoom.scale > 1 ? 'grab' : 'default';
 	}
+	clampPan() {
+		const img = this.ui.gallery.image;
+		const excessX = Math.max(0, (img.offsetWidth  * this.zoom.scale - window.innerWidth)  / 2);
+		const excessY = Math.max(0, (img.offsetHeight * this.zoom.scale - window.innerHeight) / 2);
+		this.zoom.x = Math.max(-excessX, Math.min(excessX, this.zoom.x));
+		this.zoom.y = Math.max(-excessY, Math.min(excessY, this.zoom.y));
+	}
 	resetZoom() {
 		this.zoom.scale = 1;
 		this.zoom.x = 0;
diff --git a/assets/js/min/gallery.min.js b/assets/js/min/gallery.min.js
index d59a97a..2ecb486 100644
--- a/assets/js/min/gallery.min.js
+++ b/assets/js/min/gallery.min.js
@@ -1 +1 @@
-(()=>{class e{constructor(){this.a11y=window.jvbA11y,this.index=0,this.images=[],this.zoom={scale:1,min:1,max:4,threshold:50,x:0,y:0,startX:0,startY:0,ease:.2,panning:!1},this.swipe=this.resetSwipe(),this.activePointers=new Map,this.lastTap=0,this.initElements(),this.initModal(),this.initListeners(),this.initSubscribers()}initElements(){this.elements={imageSelector:"img[data-gallery]",gallery:{modal:"dialog.gallery",wrap:".wrap",nextButton:".next",prevButton:".prev",image:".image",leftImage:".image-left",rightImage:".image-right",counter:".counter"}},this.ui=window.uiFromSelectors(this.elements)}initModal(){this.modal=new window.jvbModal(this.ui.gallery.modal,{openMessage:"Opened Gallery",closeMessage:"Closed Gallery"}),this.modal.subscribe(e=>{"modal-close"===e&&this.toggleGallery(!1)})}buildGalleryItems(e=null){let t=e?`[data-gallery="${e}"]`:this.elements.imageSelector;this.items=Array.from(document.querySelectorAll(t)).map((e,t)=>({id:e.dataset.id||t,srcset:e.srcset||e.src,sizes:e.sizes||"100vw",src:e.currentSrc||e.src,full:e.dataset.full||e.src,alt:e.alt||"",element:e}))}initListeners(){this.clickHandler=this.handleClick.bind(this),this.pointerDownHandler=this.onPointerDown.bind(this),this.pointerMoveHandler=this.onPointerMove.bind(this),this.pointerUpHandler=this.onPointerUp.bind(this),this.wheelHandler=this.onWheel.bind(this),this.keyHandler=this.handleKeys.bind(this),document.addEventListener("click",this.clickHandler)}handleClick(e){let t=window.targetCheck(e,this.elements.imageSelector);t&&!this.modal.isOpen?(e.preventDefault(),this.buildGalleryItems(t.dataset.gallery||null),this.index=this.items.findIndex(e=>e.element===t),this.toggleGallery(!0)):this.modal.isOpen&&(window.targetCheck(e,this.elements.gallery.nextButton)?(console.log("Next"),this.nextElement()):window.targetCheck(e,this.elements.gallery.prevButton)&&(console.log("Previous"),this.prevElement()))}handleKeys(e){if(this.modal.isOpen){switch(e.key){case"ArrowLeft":e.preventDefault(),this.prevElement();break;case"ArrowRight":e.preventDefault(),this.nextElement()}e.ctrlKey&&("+"!==e.key&&"="!==e.key||(e.preventDefault(),this.handleZoom(.2)),"-"===e.key&&(e.preventDefault(),this.handleZoom(-.2)),"0"===e.key&&(e.preventDefault(),this.resetZoom()))}}onPointerDown(e){e.preventDefault(),this.swipe.startX=e.clientX,this.swipe.startY=e.clientY,this.ui.gallery.image.setPointerCapture(e.pointerId),this.activePointers.set(e.pointerId,{x:e.clientX,y:e.clientY});const t=performance.now();if(t-this.lastTap<300&&1===this.activePointers.size)return this.zoom.scale>1?this.resetZoom():this.handleZoom(1,e.clientX,e.clientY),void(this.lastTap=0);if(this.lastTap=t,2===this.activePointers.size){const e=[...this.activePointers.values()];return this.pinchStartDist=Math.hypot(e[0].x-e[1].x,e[0].y-e[1].y),void(this.pinchStartScale=this.zoom.scale)}this.zoom.scale>1&&(this.zoom.panning=!0,this.zoom.startX=e.clientX-this.zoom.x,this.zoom.startY=e.clientY-this.zoom.y,this.ui.gallery.image.style.cursor="grabbing")}onPointerMove(e){if(this.activePointers.has(e.pointerId)){if(this.activePointers.set(e.pointerId,{x:e.clientX,y:e.clientY}),2===this.activePointers.size){const e=[...this.activePointers.values()],t=Math.hypot(e[0].x-e[1].x,e[0].y-e[1].y),i=this.pinchStartScale*(t/this.pinchStartDist)-this.zoom.scale;return void this.handleZoom(i)}this.zoom.panning&&(this.zoom.x=e.clientX-this.zoom.startX,this.zoom.y=e.clientY-this.zoom.startY,this.applyTransform())}}onPointerUp(e){if(this.activePointers.delete(e.pointerId),this.activePointers.size<2&&(this.pinchStartDist=0),!this.zoom.panning&&0===this.activePointers.size){this.swipe.endX=e.clientX,this.swipe.endY=e.clientY;const t=this.swipe.endX-this.swipe.startX;this.swipe.endY,this.swipe.startY;Math.abs(t)>this.zoom.threshold&&(t>0?(console.log("Swipe right"),this.prevElement()):(console.log("Swipe left"),this.nextElement()))}0===this.activePointers.size&&(this.zoom.panning=!1,this.ui.gallery.image.style.cursor=this.zoom.scale>1?"grab":"default")}onWheel(e){if(!e.ctrlKey)return;e.preventDefault();const t=e.deltaY<0?.2:-.2;this.handleZoom(t,e.clientX,e.clientY)}handleZoom(e,t=null,i=null){const s=this.zoom.scale;let n=s+e;if(n=Math.min(this.zoom.max,Math.max(this.zoom.min,n)),n===s)return;const l=n/s;let o=this.ui.gallery.image.getBoundingClientRect();null!==t&&null!==i||(t=o.left+o.width/2,i=o.top+o.height/2);const r=t-o.left,a=i-o.top;this.zoom.x=(this.zoom.x-r)*l+r,this.zoom.y=(this.zoom.y-a)*l+a,this.zoom.scale=n,this.applyTransform(),this.notify("zoom",{scale:this.zoom.scale})}applyTransform(){const e=this.ui.gallery.image;e.style.transform=`translate(${this.zoom.x}px, ${this.zoom.y}px) scale(${this.zoom.scale})`,e.style.cursor=this.zoom.scale>1?"grab":"default"}resetZoom(){this.zoom.scale=1,this.zoom.x=0,this.zoom.y=0,this.zoom.startX=0,this.zoom.startY=0,this.zoom.panning=!1,this.applyTransform()}resetSwipe(){return{startX:null,startY:null,endX:null,endY:null}}toggleGallery(e){e?(this.ui.gallery.image.draggable=!1,this.ui.gallery.image.style.userSelect="none",this.ui.gallery.image.addEventListener("pointerdown",this.pointerDownHandler),this.ui.gallery.image.addEventListener("pointermove",this.pointerMoveHandler),this.ui.gallery.image.addEventListener("pointerup",this.pointerUpHandler),this.ui.gallery.image.addEventListener("pointercancel",this.pointerUpHandler),window.addEventListener("wheel",this.wheelHandler,{passive:!1}),window.addEventListener("keydown",this.keyHandler),this.moveIntoView()):(this.ui.gallery.image.removeEventListener("pointerdown",this.pointerDownHandler),this.ui.gallery.image.removeEventListener("pointermove",this.pointerMoveHandler),this.ui.gallery.image.removeEventListener("pointerup",this.pointerUpHandler),this.ui.gallery.image.removeEventListener("pointercancel",this.pointerUpHandler),window.removeEventListener("wheel",this.wheelHandler),window.removeEventListener("keydown",this.keyHandler),this.resetZoom(),this.resetSwipe(),this.activePointers.clear(),this.lastTap=0),e&&!this.modal.isOpen&&this.modal.handleOpen()}moveIntoView(e=0){let t=this.index+e;t<0?t=this.items.length-1:t>=this.items.length?t=0:t===this.items.length-3&&this.notify("load-more"),this.index=t,this.updateDisplay(),this.preloadAdjacent(),this.a11y.announce(`Image ${this.index+1} of ${this.items.length}`)}nextElement(){this.resetZoom(),this.moveIntoView(1)}prevElement(){this.resetZoom(),this.moveIntoView(-1)}updateDisplay(){const e=this.items[this.index];if(!e)return;const t=this.ui.gallery.image;if(e.srcset&&(t.srcset=e.srcset,t.sizes=e.sizes),t.src=e.src,t.alt=e.alt,e.full&&e.full!==e.src){const i=new Image;i.onload=()=>{this.items[this.index]===e&&(t.src=e.full,t.removeAttribute("srcset"),t.removeAttribute("sizes"))},i.src=e.full}this.ui.gallery.counter.textContent=`${this.index+1} / ${this.items.length}`,this.ui.gallery.prevButton.disabled=this.items.length<=1,this.ui.gallery.nextButton.disabled=this.items.length<=1}preloadAdjacent(){[-1,1].forEach(e=>{const t=this.index+e;if(t>0&&t<this.items.length){const i=this.items[t];(e<0?this.ui.gallery.leftImage:this.ui.gallery.rightImage).src=i.full}})}initSubscribers(){this.subscribers=new Set}subscribe(e){return this.subscribers.add(e),()=>this.subscribers.delete(e)}notify(e,t={}){this.subscribers.forEach(i=>{try{i(e,t)}catch(e){console.error("Subscriber error:",e)}})}destroy(){this.subscribers.clear(),this.toggleGallery(!1),document.removeEventListener("click",this.clickHandler)}}document.addEventListener("DOMContentLoaded",function(){document.querySelector("dialog.gallery")&&(window.jvbGallery=new e)})})();
\ No newline at end of file
+(()=>{class e{constructor(){this.a11y=window.jvbA11y,this.index=0,this.images=[],this.zoom={scale:1,min:1,max:4,threshold:50,x:0,y:0,startX:0,startY:0,ease:.2,panning:!1},this.swipe=this.resetSwipe(),this.activePointers=new Map,this.lastTap=0,this.initElements(),this.initModal(),this.initListeners(),this.initSubscribers(),console.log("Gallery loaded...")}initElements(){this.elements={imageSelector:"img[data-gallery]",gallery:{modal:"dialog.gallery",wrap:".wrap",nextButton:".next",prevButton:".prev",image:".image",leftImage:".image-left",rightImage:".image-right",counter:".counter"}},this.ui=window.uiFromSelectors(this.elements)}initModal(){this.modal=new window.jvbModal(this.ui.gallery.modal,{openMessage:"Opened Gallery",closeMessage:"Closed Gallery"}),this.modal.subscribe(e=>{"modal-close"===e&&this.toggleGallery(!1)})}buildGalleryItems(e=null){let t=e?`[data-gallery="${e}"]`:this.elements.imageSelector;this.items=Array.from(document.querySelectorAll(t)).map((e,t)=>({id:e.dataset.id||t,srcset:e.srcset||e.src,sizes:e.sizes||"100vw",src:e.currentSrc||e.src,full:e.dataset.full||e.src,alt:e.alt||"",element:e}))}initListeners(){this.clickHandler=this.handleClick.bind(this),this.pointerDownHandler=this.onPointerDown.bind(this),this.pointerMoveHandler=this.onPointerMove.bind(this),this.pointerUpHandler=this.onPointerUp.bind(this),this.wheelHandler=this.onWheel.bind(this),this.keyHandler=this.handleKeys.bind(this),document.addEventListener("click",this.clickHandler)}handleClick(e){let t=window.targetCheck(e,this.elements.imageSelector);t&&!this.modal.isOpen?(e.preventDefault(),this.buildGalleryItems(t.dataset.gallery||null),this.index=this.items.findIndex(e=>e.element===t),this.toggleGallery(!0)):this.modal.isOpen&&(window.targetCheck(e,this.elements.gallery.nextButton)?(console.log("Next"),this.nextElement()):window.targetCheck(e,this.elements.gallery.prevButton)&&(console.log("Previous"),this.prevElement()))}handleKeys(e){if(this.modal.isOpen){switch(e.key){case"ArrowLeft":e.preventDefault(),this.prevElement();break;case"ArrowRight":e.preventDefault(),this.nextElement()}e.ctrlKey&&("+"!==e.key&&"="!==e.key||(e.preventDefault(),this.handleZoom(.2)),"-"===e.key&&(e.preventDefault(),this.handleZoom(-.2)),"0"===e.key&&(e.preventDefault(),this.resetZoom()))}}onPointerDown(e){e.preventDefault(),this.swipe.startX=e.clientX,this.swipe.startY=e.clientY,this.ui.gallery.image.setPointerCapture(e.pointerId),this.activePointers.set(e.pointerId,{x:e.clientX,y:e.clientY});const t=performance.now();if(t-this.lastTap<300&&1===this.activePointers.size)return this.zoom.scale>1?this.resetZoom():this.handleZoom(1,e.clientX,e.clientY),void(this.lastTap=0);if(this.lastTap=t,2===this.activePointers.size){const e=[...this.activePointers.values()];return this.pinchStartDist=Math.hypot(e[0].x-e[1].x,e[0].y-e[1].y),void(this.pinchStartScale=this.zoom.scale)}this.zoom.scale>1&&(this.zoom.panning=!0,this.zoom.startX=e.clientX-this.zoom.x,this.zoom.startY=e.clientY-this.zoom.y,this.ui.gallery.image.style.cursor="grabbing")}onPointerMove(e){if(this.activePointers.has(e.pointerId)){if(this.activePointers.set(e.pointerId,{x:e.clientX,y:e.clientY}),2===this.activePointers.size){const e=[...this.activePointers.values()],t=Math.hypot(e[0].x-e[1].x,e[0].y-e[1].y),i=this.pinchStartScale*(t/this.pinchStartDist)-this.zoom.scale,s=(e[0].x+e[1].x)/2,n=(e[0].y+e[1].y)/2;return void this.handleZoom(i,s,n)}this.zoom.panning&&(this.zoom.x=e.clientX-this.zoom.startX,this.zoom.y=e.clientY-this.zoom.startY,this.applyTransform())}}onPointerUp(e){const t=this.activePointers.get(e.pointerId);if(this.activePointers.delete(e.pointerId),this.activePointers.size<2&&(this.pinchStartDist=0),this.zoom.scale<=1&&!this.zoom.panning&&0===this.activePointers.size){const i=t?.x??e.clientX,s=t?.y??e.clientY,n=i-this.swipe.startX,o=s-this.swipe.startY;Math.abs(n)>this.zoom.threshold&&Math.abs(n)>Math.abs(o)&&(n>0?this.prevElement():this.nextElement())}0===this.activePointers.size&&(this.zoom.panning=!1,this.ui.gallery.image.style.cursor=this.zoom.scale>1?"grab":"default")}onWheel(e){if(!e.ctrlKey)return;e.preventDefault();const t=e.deltaY<0?.2:-.2;this.handleZoom(t,e.clientX,e.clientY)}handleZoom(e,t=null,i=null){const s=this.zoom.scale;let n=s+e;if(n=Math.min(this.zoom.max,Math.max(this.zoom.min,n)),n===s)return;const o=n/s;let l=this.ui.gallery.image.getBoundingClientRect();null!==t&&null!==i||(t=l.left+l.width/2,i=l.top+l.height/2);const r=t-l.left,a=i-l.top;this.zoom.x=(this.zoom.x-r)*o+r,this.zoom.y=(this.zoom.y-a)*o+a,this.zoom.scale=n,this.applyTransform(),this.notify("zoom",{scale:this.zoom.scale})}applyTransform(){this.clampPan();const e=this.ui.gallery.image;e.style.transform=`translate(${this.zoom.x}px, ${this.zoom.y}px) scale(${this.zoom.scale})`,e.style.cursor=this.zoom.scale>1?"grab":"default"}clampPan(){const e=this.ui.gallery.image,t=Math.max(0,(e.offsetWidth*this.zoom.scale-window.innerWidth)/2),i=Math.max(0,(e.offsetHeight*this.zoom.scale-window.innerHeight)/2);this.zoom.x=Math.max(-t,Math.min(t,this.zoom.x)),this.zoom.y=Math.max(-i,Math.min(i,this.zoom.y))}resetZoom(){this.zoom.scale=1,this.zoom.x=0,this.zoom.y=0,this.zoom.startX=0,this.zoom.startY=0,this.zoom.panning=!1,this.applyTransform()}resetSwipe(){return{startX:null,startY:null,endX:null,endY:null}}toggleGallery(e){e?(this.ui.gallery.image.draggable=!1,this.ui.gallery.image.style.userSelect="none",this.ui.gallery.image.addEventListener("pointerdown",this.pointerDownHandler),this.ui.gallery.image.addEventListener("pointermove",this.pointerMoveHandler),this.ui.gallery.image.addEventListener("pointerup",this.pointerUpHandler),this.ui.gallery.image.addEventListener("pointercancel",this.pointerUpHandler),window.addEventListener("wheel",this.wheelHandler,{passive:!1}),window.addEventListener("keydown",this.keyHandler),this.moveIntoView()):(this.ui.gallery.image.removeEventListener("pointerdown",this.pointerDownHandler),this.ui.gallery.image.removeEventListener("pointermove",this.pointerMoveHandler),this.ui.gallery.image.removeEventListener("pointerup",this.pointerUpHandler),this.ui.gallery.image.removeEventListener("pointercancel",this.pointerUpHandler),window.removeEventListener("wheel",this.wheelHandler),window.removeEventListener("keydown",this.keyHandler),this.resetZoom(),this.resetSwipe(),this.activePointers.clear(),this.lastTap=0),e&&!this.modal.isOpen&&this.modal.handleOpen()}moveIntoView(e=0){let t=this.index+e;t<0?t=this.items.length-1:t>=this.items.length?t=0:t===this.items.length-3&&this.notify("load-more"),this.index=t,this.updateDisplay(),this.preloadAdjacent(),this.a11y.announce(`Image ${this.index+1} of ${this.items.length}`)}nextElement(){this.resetZoom(),this.moveIntoView(1)}prevElement(){this.resetZoom(),this.moveIntoView(-1)}updateDisplay(){const e=this.items[this.index];if(!e)return;const t=this.ui.gallery.image;if(e.srcset&&(t.srcset=e.srcset,t.sizes=e.sizes),t.src=e.src,t.alt=e.alt,e.full&&e.full!==e.src){const i=new Image;i.onload=()=>{this.items[this.index]===e&&(t.src=e.full,t.removeAttribute("srcset"),t.removeAttribute("sizes"))},i.src=e.full}this.ui.gallery.counter.textContent=`${this.index+1} / ${this.items.length}`,this.ui.gallery.prevButton.disabled=this.items.length<=1,this.ui.gallery.nextButton.disabled=this.items.length<=1}preloadAdjacent(){[-1,1].forEach(e=>{const t=this.index+e;if(t>0&&t<this.items.length){const i=this.items[t];(e<0?this.ui.gallery.leftImage:this.ui.gallery.rightImage).src=i.full}})}initSubscribers(){this.subscribers=new Set}subscribe(e){return this.subscribers.add(e),()=>this.subscribers.delete(e)}notify(e,t={}){this.subscribers.forEach(i=>{try{i(e,t)}catch(e){console.error("Subscriber error:",e)}})}destroy(){this.subscribers.clear(),this.toggleGallery(!1),document.removeEventListener("click",this.clickHandler)}}document.addEventListener("DOMContentLoaded",function(){document.querySelector("dialog.gallery")&&(window.jvbGallery=new e)})})();
\ No newline at end of file
diff --git a/build/drawer-menu/style-index-rtl.css b/build/drawer-menu/style-index-rtl.css
index 2527c65..38606b7 100644
--- a/build/drawer-menu/style-index-rtl.css
+++ b/build/drawer-menu/style-index-rtl.css
@@ -1 +1 @@
-nav.drawer{bottom:0;max-height:100vh;overflow:hidden auto;position:fixed;left:0;transition:var(--trans-size);width:var(--btn);z-index:var(--z-5);--dir:column-reverse;background-color:var(--base);border-right:1px solid var(--base-200);box-shadow:rgba(var(--base-rgb),var(--op-4)) var(--shdw-left);height:auto;--w:var(--chip_)}nav.drawer .section-title,nav.drawer .title{display:none}nav.drawer ul .icon{min-width:var(--chip_)}nav.drawer .a,nav.drawer a{gap:.5rem;height:var(--chipchip);justify-content:center;padding:0 .5rem;width:100%}nav.drawer .toggle{width:100%}nav.drawer .toggle .icon{transform:rotate(0);transition:var(--trans-transform)}nav.drawer.open{width:240px}nav.drawer.open .section-title,nav.drawer.open .title{display:block}nav.drawer.open .toggle .icon{transform:rotate(-180deg)}nav.drawer.open .a,nav.drawer.open a{justify-content:flex-start}nav.drawer ul{--dir:column;--gap:0;--height:auto;margin:0;padding:0}nav.drawer li,nav.drawer ul{height:auto;width:100%}nav.drawer .row{width:100%}nav.drawer .menu-section{border-bottom:1px solid var(--contrast-200)}nav.drawer .section-title{font-size:var(--small);font-weight:700;opacity:.6;padding:.5rem var(--px);text-transform:uppercase}
+nav.drawer{bottom:0;max-height:100vh;overflow:hidden auto;position:fixed;left:0;transition:var(--trans-size);width:var(--btn);z-index:var(--z-5);--dir:column-reverse;background-color:rgb(var(--base));border-right:1px solid rgb(var(--base-200));box-shadow:rgba(var(--base),var(--op-4)) var(--shdw-left);height:auto;--w:var(--chip_)}nav.drawer .section-title,nav.drawer .title{display:none}nav.drawer ul .icon{min-width:var(--chip_)}nav.drawer .a,nav.drawer a{gap:.5rem;height:var(--chipchip);justify-content:center;padding:0 .5rem;width:100%}nav.drawer .toggle{width:100%}nav.drawer .toggle .icon{transform:rotate(0);transition:var(--trans-transform)}nav.drawer.open{width:240px}nav.drawer.open .section-title,nav.drawer.open .title{display:block}nav.drawer.open .toggle .icon{transform:rotate(-180deg)}nav.drawer.open .a,nav.drawer.open a{justify-content:flex-start}nav.drawer ul{--dir:column;--gap:0;--height:auto;margin:0;padding:0}nav.drawer li,nav.drawer ul{height:auto;width:100%}nav.drawer .row{width:100%}nav.drawer .menu-section{border-bottom:1px solid rgb(var(--contrast-200))}nav.drawer .section-title{font-size:var(--small);font-weight:700;opacity:.6;padding:.5rem var(--px);text-transform:uppercase}
diff --git a/build/drawer-menu/style-index.css b/build/drawer-menu/style-index.css
index 1591a7f..e97f166 100644
--- a/build/drawer-menu/style-index.css
+++ b/build/drawer-menu/style-index.css
@@ -1 +1 @@
-nav.drawer{bottom:0;max-height:100vh;overflow:hidden auto;position:fixed;right:0;transition:var(--trans-size);width:var(--btn);z-index:var(--z-5);--dir:column-reverse;background-color:var(--base);border-left:1px solid var(--base-200);box-shadow:rgba(var(--base-rgb),var(--op-4)) var(--shdw-left);height:auto;--w:var(--chip_)}nav.drawer .section-title,nav.drawer .title{display:none}nav.drawer ul .icon{min-width:var(--chip_)}nav.drawer .a,nav.drawer a{gap:.5rem;height:var(--chipchip);justify-content:center;padding:0 .5rem;width:100%}nav.drawer .toggle{width:100%}nav.drawer .toggle .icon{transform:rotate(0);transition:var(--trans-transform)}nav.drawer.open{width:240px}nav.drawer.open .section-title,nav.drawer.open .title{display:block}nav.drawer.open .toggle .icon{transform:rotate(180deg)}nav.drawer.open .a,nav.drawer.open a{justify-content:flex-start}nav.drawer ul{--dir:column;--gap:0;--height:auto;margin:0;padding:0}nav.drawer li,nav.drawer ul{height:auto;width:100%}nav.drawer .row{width:100%}nav.drawer .menu-section{border-bottom:1px solid var(--contrast-200)}nav.drawer .section-title{font-size:var(--small);font-weight:700;opacity:.6;padding:.5rem var(--px);text-transform:uppercase}
+nav.drawer{bottom:0;max-height:100vh;overflow:hidden auto;position:fixed;right:0;transition:var(--trans-size);width:var(--btn);z-index:var(--z-5);--dir:column-reverse;background-color:rgb(var(--base));border-left:1px solid rgb(var(--base-200));box-shadow:rgba(var(--base),var(--op-4)) var(--shdw-left);height:auto;--w:var(--chip_)}nav.drawer .section-title,nav.drawer .title{display:none}nav.drawer ul .icon{min-width:var(--chip_)}nav.drawer .a,nav.drawer a{gap:.5rem;height:var(--chipchip);justify-content:center;padding:0 .5rem;width:100%}nav.drawer .toggle{width:100%}nav.drawer .toggle .icon{transform:rotate(0);transition:var(--trans-transform)}nav.drawer.open{width:240px}nav.drawer.open .section-title,nav.drawer.open .title{display:block}nav.drawer.open .toggle .icon{transform:rotate(180deg)}nav.drawer.open .a,nav.drawer.open a{justify-content:flex-start}nav.drawer ul{--dir:column;--gap:0;--height:auto;margin:0;padding:0}nav.drawer li,nav.drawer ul{height:auto;width:100%}nav.drawer .row{width:100%}nav.drawer .menu-section{border-bottom:1px solid rgb(var(--contrast-200))}nav.drawer .section-title{font-size:var(--small);font-weight:700;opacity:.6;padding:.5rem var(--px);text-transform:uppercase}
diff --git a/build/faq/style-index-rtl.css b/build/faq/style-index-rtl.css
index 2d0bcfc..9f59a7f 100644
--- a/build/faq/style-index-rtl.css
+++ b/build/faq/style-index-rtl.css
@@ -1 +1 @@
-nav#faq{background-color:var(--base-100);border-radius:var(--radius-outer);display:block;height:-moz-max-content;height:max-content;padding:1.5rem;touch-action:auto}nav#faq ol{counter-reset:faq;display:block;height:-moz-fit-content;height:fit-content;list-style:decimal-leading-zero}nav#faq ol li{counter-increment:faq;width:-moz-max-content;width:max-content}nav#faq ol li:before{content:counter(faq);display:block;font-family:var(--heading);font-weight:var(--fw-h-bold)}nav#faq h2{font-size:var(--txt-large);right:0;margin:.5rem 0}nav#faq a{padding:.5rem}.faq-block{max-width:none;padding-bottom:3rem;width:100%}.faq-block>*{margin:1rem auto;max-width:var(--wide)}.faq-block h2{margin:5rem 0 1.5rem}.faq-block h3{margin:0;text-transform:none}.faq-block :target{background-color:var(--base);outline:none}.faq-block :target h2{background-color:var(--base);border-radius:var(--radius-outer);padding:1rem 1.5rem}.faq-block details{margin:1rem auto;max-width:var(--content);padding:.75rem}.faq-block details+details{margin-top:3rem}.faq-block details .button{display:flex;height:-moz-fit-content;height:fit-content;margin-right:auto}
+nav#faq{background-color:rgb(var(--base-100));border-radius:var(--radius-outer);display:block;height:-moz-max-content;height:max-content;padding:1.5rem;touch-action:auto}nav#faq ol{counter-reset:faq;display:block;height:-moz-fit-content;height:fit-content;list-style:decimal-leading-zero}nav#faq ol li{counter-increment:faq;width:-moz-max-content;width:max-content}nav#faq ol li:before{content:counter(faq);display:block;font-family:var(--heading);font-weight:var(--fw-h-bold)}nav#faq h2{font-size:var(--txt-large);right:0;margin:.5rem 0}nav#faq a{padding:.5rem}.faq-block{max-width:none;padding-bottom:3rem;width:100%}.faq-block>*{margin:1rem auto;max-width:var(--wide)}.faq-block h2{margin:5rem 0 1.5rem}.faq-block h3{margin:0;text-transform:none}.faq-block :target{background-color:rgb(var(--base));outline:none}.faq-block :target h2{background-color:rgb(var(--base));border-radius:var(--radius-outer);padding:1rem 1.5rem}.faq-block details{margin:1rem auto;max-width:var(--content);padding:.75rem}.faq-block details+details{margin-top:3rem}.faq-block details .button{display:flex;height:-moz-fit-content;height:fit-content;margin-right:auto}
diff --git a/build/faq/style-index.css b/build/faq/style-index.css
index c1ab882..f166ad3 100644
--- a/build/faq/style-index.css
+++ b/build/faq/style-index.css
@@ -1 +1 @@
-nav#faq{background-color:var(--base-100);border-radius:var(--radius-outer);display:block;height:-moz-max-content;height:max-content;padding:1.5rem;touch-action:auto}nav#faq ol{counter-reset:faq;display:block;height:-moz-fit-content;height:fit-content;list-style:decimal-leading-zero}nav#faq ol li{counter-increment:faq;width:-moz-max-content;width:max-content}nav#faq ol li:before{content:counter(faq);display:block;font-family:var(--heading);font-weight:var(--fw-h-bold)}nav#faq h2{font-size:var(--txt-large);left:0;margin:.5rem 0}nav#faq a{padding:.5rem}.faq-block{max-width:none;padding-bottom:3rem;width:100%}.faq-block>*{margin:1rem auto;max-width:var(--wide)}.faq-block h2{margin:5rem 0 1.5rem}.faq-block h3{margin:0;text-transform:none}.faq-block :target{background-color:var(--base);outline:none}.faq-block :target h2{background-color:var(--base);border-radius:var(--radius-outer);padding:1rem 1.5rem}.faq-block details{margin:1rem auto;max-width:var(--content);padding:.75rem}.faq-block details+details{margin-top:3rem}.faq-block details .button{display:flex;height:-moz-fit-content;height:fit-content;margin-left:auto}
+nav#faq{background-color:rgb(var(--base-100));border-radius:var(--radius-outer);display:block;height:-moz-max-content;height:max-content;padding:1.5rem;touch-action:auto}nav#faq ol{counter-reset:faq;display:block;height:-moz-fit-content;height:fit-content;list-style:decimal-leading-zero}nav#faq ol li{counter-increment:faq;width:-moz-max-content;width:max-content}nav#faq ol li:before{content:counter(faq);display:block;font-family:var(--heading);font-weight:var(--fw-h-bold)}nav#faq h2{font-size:var(--txt-large);left:0;margin:.5rem 0}nav#faq a{padding:.5rem}.faq-block{max-width:none;padding-bottom:3rem;width:100%}.faq-block>*{margin:1rem auto;max-width:var(--wide)}.faq-block h2{margin:5rem 0 1.5rem}.faq-block h3{margin:0;text-transform:none}.faq-block :target{background-color:rgb(var(--base));outline:none}.faq-block :target h2{background-color:rgb(var(--base));border-radius:var(--radius-outer);padding:1rem 1.5rem}.faq-block details{margin:1rem auto;max-width:var(--content);padding:.75rem}.faq-block details+details{margin-top:3rem}.faq-block details .button{display:flex;height:-moz-fit-content;height:fit-content;margin-left:auto}
diff --git a/build/feed/style-index-rtl.css b/build/feed/style-index-rtl.css
index 0e551eb..44ab608 100644
--- a/build/feed/style-index-rtl.css
+++ b/build/feed/style-index-rtl.css
@@ -1 +1 @@
-.feed-block{grid-column:full}.feed-block .filters{margin:0 auto;max-width:var(--wide);padding:1rem 0}.feed-block .filters .remove-term.remove-term{height:-moz-max-content;height:max-content;width:-moz-max-content;width:max-content}.feed-block .filter-group{padding:2rem 0;position:relative}.feed-block .filter-group .label{right:0;position:absolute}.feed-block .filter-group>.label{top:0}.feed-block .filter-group [type=radio]{right:var(--offScreen);position:absolute}.feed-block .filter-group button,.feed-block .filter-group label{height:-moz-max-content;height:max-content;padding:.5rem;position:relative}.feed-block .filter-group button:hover,.feed-block .filter-group label:hover{color:var(--action-contrast)}.feed-block .filter-group :checked+label .label,.feed-block .filter-group button:hover .label,.feed-block .filter-group label:hover .label{opacity:1;visibility:visible}.feed-block .filter-group button .label,.feed-block .filter-group label .label,.feed-block .filter-group:has(label:hover) :checked+label .label{--height:max-content;bottom:-2rem;font-weight:var(--fw-b);opacity:0;visibility:hidden;white-space:nowrap;width:-moz-max-content;width:max-content}.feed-block h3{font-size:var(--medium);margin:0 0 .25rem}.placeholder{align-items:center;aspect-ratio:1;background:var(--base);border:1rem solid var(--base-50);border-radius:1rem;display:flex;justify-content:center}.placeholder i.icon{--w:50%;animation:dance 2.5s ease-in-out infinite;color:var(--base-200)}.item-grid{max-width:100%;padding:0 var(--chip)}.feed.item{background:var(--base-50);border-radius:.5rem;box-shadow:0 2px 4px rgba(0,0,0,.1);height:-moz-fit-content;height:fit-content;overflow:hidden;padding:0;position:relative}.feed.item details{padding:0;position:relative;width:100%;z-index:var(--z-2)}.feed.item details summary{backdrop-filter:blur(5px);background-color:rgba(var(--base-rgb),var(--op-2));right:0;position:absolute;top:-3rem;width:100%}.feed.item details summary:hover{background-color:rgba(var(--action-rgb),var(--op-45))}.feed.item details[open]{padding:.25rem .5rem}.feed.item details[open] summary .icon{opacity:0}.feed.item img{height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.feed.item img:hover{opacity:.8}.feed.item[data-timeline] .images{aspect-ratio:3/2;padding:0 0 1rem}.feed.item[data-timeline] .images span{background-color:var(--action-0);color:var(--action-contrast);padding:.25rem .5rem;position:absolute;width:50%}.feed.item[data-timeline] .images span:first-of-type{bottom:0;left:50%;text-align:left}.feed.item[data-timeline] .images span:last-of-type{right:50%;top:0}.feed.item[data-timeline] .images>a{display:flex;flex-wrap:nowrap;height:100%;position:relative;width:100%}.feed.item[data-timeline] img{height:100%;-o-object-fit:cover;object-fit:cover;width:50%}.feed.item[data-timeline] img:first-of-type{border-left:1px solid var(--action-0)}.feed.item a:after,.feed.item a:before{display:none}.feed.item label{font-weight:400;text-transform:none}.feed.item label .icon{--w:1.5em}.item-grid:has([data-timeline]){grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.items-wrap [type=checkbox],.items-wrap [type=radio]{right:-200vw;opacity:0;position:absolute}.items-wrap [type=checkbox]+label,.items-wrap [type=radio]+label{cursor:pointer;position:relative}.items-wrap [type=checkbox]+label:hover,.items-wrap [type=radio]+label:hover{color:var(--action-0)}.items-wrap [type=checkbox]+label:after,.items-wrap [type=checkbox]+label:before,.items-wrap [type=radio]+label:after,.items-wrap [type=radio]+label:before{content:"";position:absolute;top:50%}.items-wrap [type=checkbox]+label:after,.items-wrap [type=radio]+label:after{border:solid var(--light-0);border-width:0 0 2px 2px;display:none;height:10px;right:5px;transform:translateY(-70%) rotate(-45deg);width:5px}.items-wrap [type=checkbox]+label:before,.items-wrap [type=radio]+label:before{background-color:var(--base);border:2px solid var(--contrast-200);border-radius:var(--radius);height:1rem;right:0;transform:translateY(-50%);width:1rem}.items-wrap [type=checkbox]:hover+label:before,.items-wrap [type=radio]:hover+label:before{border-color:var(--action-200)}.items-wrap [type=checkbox]:checked+label:before,.items-wrap [type=radio]:checked+label:before{background-color:var(--action-0);border-color:var(--action-100)}.items-wrap [type=radio]:checked+label:before{border-radius:50%}.items-wrap [type=checkbox]:checked+label:after{border:solid var(--light-0);border-width:0 0 2px 2px;display:block;height:.66rem;right:5px;top:50%;transform:translateY(-70%) rotate(-45deg);width:.35rem}.items-wrap :disabled+label{cursor:not-allowed}.items-wrap :disabled+label,.items-wrap :disabled+label:hover{background-color:var(--base-50);border-color:var(--base-200);color:var(--base-200)}.items-wrap :disabled+label:before{border-color:var(--base-200)}#jvb-selector .items-wrap [type=checkbox]+label,#jvb-selector .items-wrap [type=radio]+label{flex:1;padding-right:2rem!important;transform-origin:top center;will-change:transform}.feed-block+footer{background-color:var(--base-50);display:flex;grid-column:full;justify-content:flex-end;margin:0;padding:0!important;z-index:0}.feed-block+footer button{margin-right:auto;padding:.35rem .25rem;width:-moz-max-content;width:max-content;--w:1.3em!important;flex-wrap:nowrap;font-size:var(--txt-x-small);justify-content:flex-start;min-height:0;transition:var(--trans-size)}.feed-block+footer button span{display:none;white-space:nowrap}.feed-block+footer button:focus span,.feed-block+footer button:hover span{display:block}
+.feed-block{grid-column:full}.feed-block .filters{margin:0 auto;max-width:var(--wide);padding:1rem 0}.feed-block .filters .remove-term.remove-term{height:-moz-max-content;height:max-content;width:-moz-max-content;width:max-content}.feed-block .filter-group{padding:2rem 0;position:relative}.feed-block .filter-group .label{right:0;position:absolute}.feed-block .filter-group>.label{top:0}.feed-block .filter-group [type=radio]{right:var(--offScreen);position:absolute}.feed-block .filter-group button,.feed-block .filter-group label{height:-moz-max-content;height:max-content;padding:.5rem;position:relative}.feed-block .filter-group button:hover,.feed-block .filter-group label:hover{color:var(--action-contrast)}.feed-block .filter-group :checked+label .label,.feed-block .filter-group button:hover .label,.feed-block .filter-group label:hover .label{opacity:1;visibility:visible}.feed-block .filter-group button .label,.feed-block .filter-group label .label,.feed-block .filter-group:has(label:hover) :checked+label .label{--height:max-content;bottom:-2rem;font-weight:var(--fw-b);opacity:0;visibility:hidden;white-space:nowrap;width:-moz-max-content;width:max-content}.feed-block h3{font-size:var(--medium);margin:0 0 .25rem}.placeholder{align-items:center;aspect-ratio:1;background:rgb(var(--base));border:1rem solid rgb(var(--base-50));border-radius:1rem;display:flex;justify-content:center}.placeholder i.icon{--w:50%;animation:dance 2.5s ease-in-out infinite;color:rgb(var(--base-200))}.item-grid{max-width:100%;padding:0 var(--chip)}.feed.item{background:rgb(var(--base-50));border-radius:.5rem;box-shadow:0 2px 4px rgba(0,0,0,.1);height:-moz-fit-content;height:fit-content;overflow:hidden;padding:0;position:relative}.feed.item details{padding:0;position:relative;width:100%;z-index:var(--z-2)}.feed.item details summary{backdrop-filter:blur(5px);background-color:rgba(var(--base),var(--op-2));right:0;position:absolute;top:-3rem;width:100%}.feed.item details summary:hover{background-color:rgba(var(--action-0),var(--op-45))}.feed.item details[open]{padding:.25rem .5rem}.feed.item details[open] summary .icon{opacity:0}.feed.item img{height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.feed.item img:hover{opacity:.8}.feed.item[data-timeline] .images{aspect-ratio:3/2;padding:0 0 1rem}.feed.item[data-timeline] .images span{background-color:rgb(var(--action-0));color:var(--action-contrast);padding:.25rem .5rem;position:absolute;width:50%}.feed.item[data-timeline] .images span:first-of-type{bottom:0;left:50%;text-align:left}.feed.item[data-timeline] .images span:last-of-type{right:50%;top:0}.feed.item[data-timeline] .images>a{display:flex;flex-wrap:nowrap;height:100%;position:relative;width:100%}.feed.item[data-timeline] img{height:100%;-o-object-fit:cover;object-fit:cover;width:50%}.feed.item[data-timeline] img:first-of-type{border-left:1px solid rgb(var(--action-0))}.feed.item a:after,.feed.item a:before{display:none}.feed.item label{font-weight:400;text-transform:none}.feed.item label .icon{--w:1.5em}.item-grid:has([data-timeline]){grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.items-wrap [type=checkbox],.items-wrap [type=radio]{right:-200vw;opacity:0;position:absolute}.items-wrap [type=checkbox]+label,.items-wrap [type=radio]+label{cursor:pointer;position:relative}.items-wrap [type=checkbox]+label:hover,.items-wrap [type=radio]+label:hover{color:rgb(var(--action-0))}.items-wrap [type=checkbox]+label:after,.items-wrap [type=checkbox]+label:before,.items-wrap [type=radio]+label:after,.items-wrap [type=radio]+label:before{content:"";position:absolute;top:50%}.items-wrap [type=checkbox]+label:after,.items-wrap [type=radio]+label:after{border:solid var(--light-0);border-width:0 0 2px 2px;display:none;height:10px;right:5px;transform:translateY(-70%) rotate(-45deg);width:5px}.items-wrap [type=checkbox]+label:before,.items-wrap [type=radio]+label:before{background-color:rgb(var(--base));border:2px solid rgb(var(--contrast-200));border-radius:var(--radius);height:1rem;right:0;transform:translateY(-50%);width:1rem}.items-wrap [type=checkbox]:hover+label:before,.items-wrap [type=radio]:hover+label:before{border-color:rgb(var(--action-200))}.items-wrap [type=checkbox]:checked+label:before,.items-wrap [type=radio]:checked+label:before{background-color:rgb(var(--action-0));border-color:rgb(var(--action-100))}.items-wrap [type=radio]:checked+label:before{border-radius:50%}.items-wrap [type=checkbox]:checked+label:after{border:solid var(--light-0);border-width:0 0 2px 2px;display:block;height:.66rem;right:5px;top:50%;transform:translateY(-70%) rotate(-45deg);width:.35rem}.items-wrap :disabled+label{cursor:not-allowed}.items-wrap :disabled+label,.items-wrap :disabled+label:hover{background-color:rgb(var(--base-50));border-color:rgb(var(--base-200));color:rgb(var(--base-200))}.items-wrap :disabled+label:before{border-color:rgb(var(--base-200))}#jvb-selector .items-wrap [type=checkbox]+label,#jvb-selector .items-wrap [type=radio]+label{flex:1;padding-right:2rem!important;transform-origin:top center;will-change:transform}.feed-block+footer{background-color:rgb(var(--base-50));display:flex;grid-column:full;justify-content:flex-end;margin:0;padding:0!important;z-index:0}.feed-block+footer button{margin-right:auto;padding:.35rem .25rem;width:-moz-max-content;width:max-content;--w:1.3em!important;flex-wrap:nowrap;font-size:var(--txt-x-small);justify-content:flex-start;min-height:0;transition:var(--trans-size)}.feed-block+footer button span{display:none;white-space:nowrap}.feed-block+footer button:focus span,.feed-block+footer button:hover span{display:block}
diff --git a/build/feed/style-index.css b/build/feed/style-index.css
index f449581..6957c39 100644
--- a/build/feed/style-index.css
+++ b/build/feed/style-index.css
@@ -1 +1 @@
-.feed-block{grid-column:full}.feed-block .filters{margin:0 auto;max-width:var(--wide);padding:1rem 0}.feed-block .filters .remove-term.remove-term{height:-moz-max-content;height:max-content;width:-moz-max-content;width:max-content}.feed-block .filter-group{padding:2rem 0;position:relative}.feed-block .filter-group .label{left:0;position:absolute}.feed-block .filter-group>.label{top:0}.feed-block .filter-group [type=radio]{left:var(--offScreen);position:absolute}.feed-block .filter-group button,.feed-block .filter-group label{height:-moz-max-content;height:max-content;padding:.5rem;position:relative}.feed-block .filter-group button:hover,.feed-block .filter-group label:hover{color:var(--action-contrast)}.feed-block .filter-group :checked+label .label,.feed-block .filter-group button:hover .label,.feed-block .filter-group label:hover .label{opacity:1;visibility:visible}.feed-block .filter-group button .label,.feed-block .filter-group label .label,.feed-block .filter-group:has(label:hover) :checked+label .label{--height:max-content;bottom:-2rem;font-weight:var(--fw-b);opacity:0;visibility:hidden;white-space:nowrap;width:-moz-max-content;width:max-content}.feed-block h3{font-size:var(--medium);margin:0 0 .25rem}.placeholder{align-items:center;aspect-ratio:1;background:var(--base);border:1rem solid var(--base-50);border-radius:1rem;display:flex;justify-content:center}.placeholder i.icon{--w:50%;animation:dance 2.5s ease-in-out infinite;color:var(--base-200)}.item-grid{max-width:100%;padding:0 var(--chip)}.feed.item{background:var(--base-50);border-radius:.5rem;box-shadow:0 2px 4px rgba(0,0,0,.1);height:-moz-fit-content;height:fit-content;overflow:hidden;padding:0;position:relative}.feed.item details{padding:0;position:relative;width:100%;z-index:var(--z-2)}.feed.item details summary{backdrop-filter:blur(5px);background-color:rgba(var(--base-rgb),var(--op-2));left:0;position:absolute;top:-3rem;width:100%}.feed.item details summary:hover{background-color:rgba(var(--action-rgb),var(--op-45))}.feed.item details[open]{padding:.25rem .5rem}.feed.item details[open] summary .icon{opacity:0}.feed.item img{height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.feed.item img:hover{opacity:.8}.feed.item[data-timeline] .images{aspect-ratio:3/2;padding:0 0 1rem}.feed.item[data-timeline] .images span{background-color:var(--action-0);color:var(--action-contrast);padding:.25rem .5rem;position:absolute;width:50%}.feed.item[data-timeline] .images span:first-of-type{bottom:0;right:50%;text-align:right}.feed.item[data-timeline] .images span:last-of-type{left:50%;top:0}.feed.item[data-timeline] .images>a{display:flex;flex-wrap:nowrap;height:100%;position:relative;width:100%}.feed.item[data-timeline] img{height:100%;-o-object-fit:cover;object-fit:cover;width:50%}.feed.item[data-timeline] img:first-of-type{border-right:1px solid var(--action-0)}.feed.item a:after,.feed.item a:before{display:none}.feed.item label{font-weight:400;text-transform:none}.feed.item label .icon{--w:1.5em}.item-grid:has([data-timeline]){grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.items-wrap [type=checkbox],.items-wrap [type=radio]{left:-200vw;opacity:0;position:absolute}.items-wrap [type=checkbox]+label,.items-wrap [type=radio]+label{cursor:pointer;position:relative}.items-wrap [type=checkbox]+label:hover,.items-wrap [type=radio]+label:hover{color:var(--action-0)}.items-wrap [type=checkbox]+label:after,.items-wrap [type=checkbox]+label:before,.items-wrap [type=radio]+label:after,.items-wrap [type=radio]+label:before{content:"";position:absolute;top:50%}.items-wrap [type=checkbox]+label:after,.items-wrap [type=radio]+label:after{border:solid var(--light-0);border-width:0 2px 2px 0;display:none;height:10px;left:5px;transform:translateY(-70%) rotate(45deg);width:5px}.items-wrap [type=checkbox]+label:before,.items-wrap [type=radio]+label:before{background-color:var(--base);border:2px solid var(--contrast-200);border-radius:var(--radius);height:1rem;left:0;transform:translateY(-50%);width:1rem}.items-wrap [type=checkbox]:hover+label:before,.items-wrap [type=radio]:hover+label:before{border-color:var(--action-200)}.items-wrap [type=checkbox]:checked+label:before,.items-wrap [type=radio]:checked+label:before{background-color:var(--action-0);border-color:var(--action-100)}.items-wrap [type=radio]:checked+label:before{border-radius:50%}.items-wrap [type=checkbox]:checked+label:after{border:solid var(--light-0);border-width:0 2px 2px 0;display:block;height:.66rem;left:5px;top:50%;transform:translateY(-70%) rotate(45deg);width:.35rem}.items-wrap :disabled+label{cursor:not-allowed}.items-wrap :disabled+label,.items-wrap :disabled+label:hover{background-color:var(--base-50);border-color:var(--base-200);color:var(--base-200)}.items-wrap :disabled+label:before{border-color:var(--base-200)}#jvb-selector .items-wrap [type=checkbox]+label,#jvb-selector .items-wrap [type=radio]+label{flex:1;padding-left:2rem!important;transform-origin:top center;will-change:transform}.feed-block+footer{background-color:var(--base-50);display:flex;grid-column:full;justify-content:flex-end;margin:0;padding:0!important;z-index:0}.feed-block+footer button{margin-left:auto;padding:.35rem .25rem;width:-moz-max-content;width:max-content;--w:1.3em!important;flex-wrap:nowrap;font-size:var(--txt-x-small);justify-content:flex-start;min-height:0;transition:var(--trans-size)}.feed-block+footer button span{display:none;white-space:nowrap}.feed-block+footer button:focus span,.feed-block+footer button:hover span{display:block}
+.feed-block{grid-column:full}.feed-block .filters{margin:0 auto;max-width:var(--wide);padding:1rem 0}.feed-block .filters .remove-term.remove-term{height:-moz-max-content;height:max-content;width:-moz-max-content;width:max-content}.feed-block .filter-group{padding:2rem 0;position:relative}.feed-block .filter-group .label{left:0;position:absolute}.feed-block .filter-group>.label{top:0}.feed-block .filter-group [type=radio]{left:var(--offScreen);position:absolute}.feed-block .filter-group button,.feed-block .filter-group label{height:-moz-max-content;height:max-content;padding:.5rem;position:relative}.feed-block .filter-group button:hover,.feed-block .filter-group label:hover{color:var(--action-contrast)}.feed-block .filter-group :checked+label .label,.feed-block .filter-group button:hover .label,.feed-block .filter-group label:hover .label{opacity:1;visibility:visible}.feed-block .filter-group button .label,.feed-block .filter-group label .label,.feed-block .filter-group:has(label:hover) :checked+label .label{--height:max-content;bottom:-2rem;font-weight:var(--fw-b);opacity:0;visibility:hidden;white-space:nowrap;width:-moz-max-content;width:max-content}.feed-block h3{font-size:var(--medium);margin:0 0 .25rem}.placeholder{align-items:center;aspect-ratio:1;background:rgb(var(--base));border:1rem solid rgb(var(--base-50));border-radius:1rem;display:flex;justify-content:center}.placeholder i.icon{--w:50%;animation:dance 2.5s ease-in-out infinite;color:rgb(var(--base-200))}.item-grid{max-width:100%;padding:0 var(--chip)}.feed.item{background:rgb(var(--base-50));border-radius:.5rem;box-shadow:0 2px 4px rgba(0,0,0,.1);height:-moz-fit-content;height:fit-content;overflow:hidden;padding:0;position:relative}.feed.item details{padding:0;position:relative;width:100%;z-index:var(--z-2)}.feed.item details summary{backdrop-filter:blur(5px);background-color:rgba(var(--base),var(--op-2));left:0;position:absolute;top:-3rem;width:100%}.feed.item details summary:hover{background-color:rgba(var(--action-0),var(--op-45))}.feed.item details[open]{padding:.25rem .5rem}.feed.item details[open] summary .icon{opacity:0}.feed.item img{height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.feed.item img:hover{opacity:.8}.feed.item[data-timeline] .images{aspect-ratio:3/2;padding:0 0 1rem}.feed.item[data-timeline] .images span{background-color:rgb(var(--action-0));color:var(--action-contrast);padding:.25rem .5rem;position:absolute;width:50%}.feed.item[data-timeline] .images span:first-of-type{bottom:0;right:50%;text-align:right}.feed.item[data-timeline] .images span:last-of-type{left:50%;top:0}.feed.item[data-timeline] .images>a{display:flex;flex-wrap:nowrap;height:100%;position:relative;width:100%}.feed.item[data-timeline] img{height:100%;-o-object-fit:cover;object-fit:cover;width:50%}.feed.item[data-timeline] img:first-of-type{border-right:1px solid rgb(var(--action-0))}.feed.item a:after,.feed.item a:before{display:none}.feed.item label{font-weight:400;text-transform:none}.feed.item label .icon{--w:1.5em}.item-grid:has([data-timeline]){grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.items-wrap [type=checkbox],.items-wrap [type=radio]{left:-200vw;opacity:0;position:absolute}.items-wrap [type=checkbox]+label,.items-wrap [type=radio]+label{cursor:pointer;position:relative}.items-wrap [type=checkbox]+label:hover,.items-wrap [type=radio]+label:hover{color:rgb(var(--action-0))}.items-wrap [type=checkbox]+label:after,.items-wrap [type=checkbox]+label:before,.items-wrap [type=radio]+label:after,.items-wrap [type=radio]+label:before{content:"";position:absolute;top:50%}.items-wrap [type=checkbox]+label:after,.items-wrap [type=radio]+label:after{border:solid var(--light-0);border-width:0 2px 2px 0;display:none;height:10px;left:5px;transform:translateY(-70%) rotate(45deg);width:5px}.items-wrap [type=checkbox]+label:before,.items-wrap [type=radio]+label:before{background-color:rgb(var(--base));border:2px solid rgb(var(--contrast-200));border-radius:var(--radius);height:1rem;left:0;transform:translateY(-50%);width:1rem}.items-wrap [type=checkbox]:hover+label:before,.items-wrap [type=radio]:hover+label:before{border-color:rgb(var(--action-200))}.items-wrap [type=checkbox]:checked+label:before,.items-wrap [type=radio]:checked+label:before{background-color:rgb(var(--action-0));border-color:rgb(var(--action-100))}.items-wrap [type=radio]:checked+label:before{border-radius:50%}.items-wrap [type=checkbox]:checked+label:after{border:solid var(--light-0);border-width:0 2px 2px 0;display:block;height:.66rem;left:5px;top:50%;transform:translateY(-70%) rotate(45deg);width:.35rem}.items-wrap :disabled+label{cursor:not-allowed}.items-wrap :disabled+label,.items-wrap :disabled+label:hover{background-color:rgb(var(--base-50));border-color:rgb(var(--base-200));color:rgb(var(--base-200))}.items-wrap :disabled+label:before{border-color:rgb(var(--base-200))}#jvb-selector .items-wrap [type=checkbox]+label,#jvb-selector .items-wrap [type=radio]+label{flex:1;padding-left:2rem!important;transform-origin:top center;will-change:transform}.feed-block+footer{background-color:rgb(var(--base-50));display:flex;grid-column:full;justify-content:flex-end;margin:0;padding:0!important;z-index:0}.feed-block+footer button{margin-left:auto;padding:.35rem .25rem;width:-moz-max-content;width:max-content;--w:1.3em!important;flex-wrap:nowrap;font-size:var(--txt-x-small);justify-content:flex-start;min-height:0;transition:var(--trans-size)}.feed-block+footer button span{display:none;white-space:nowrap}.feed-block+footer button:focus span,.feed-block+footer button:hover span{display:block}
diff --git a/build/glossary/style-index-rtl.css b/build/glossary/style-index-rtl.css
index 94d54e5..f417e5a 100644
--- a/build/glossary/style-index-rtl.css
+++ b/build/glossary/style-index-rtl.css
@@ -1 +1 @@
-:root{--navWidth:40vw}@media(min-width:768px){:root{--navWidth:22vw}}nav.glossary-index{height:60vh;position:fixed;left:-8px;top:50%;transform:translateY(-50%);width:var(--navWidth);z-index:var(--z-3)}nav.glossary-index>ul{--dir:column;--align:flex-start;--justify:flex-start;--gap:1px;height:100%;max-height:100%;overflow:hidden auto;scroll-behavior:smooth;touch-action:pan-y;width:100%}nav.glossary-index a,nav.glossary-index li{flex:1;height:-moz-max-content;height:max-content;min-height:max(var(--chipchip),-moz-max-content);min-height:max(var(--chipchip),max-content);width:100%}nav.glossary-index a{--justify:center;background-color:rgba(var(--base-rgb),var(--op-45));hyphens:auto;padding:.25rem .5rem;word-wrap:anywhere;white-space:wrap}nav.glossary-index a.active,nav.glossary-index a:focus,nav.glossary-index a:hover{background-color:rgba(var(--action-rgb),var(--op-6));color:var(--action-contrast)}.glossary dd{margin-right:.5rem;width:calc(100% + .75rem)}.glossary dd,.glossary dt{right:0;position:relative;transition:margin var(--trans-base),right var(--trans-base),width var(--trans-base)}.glossary dt.active,.glossary dt:target{color:var(--action-0);right:-1.5rem;outline:none;padding:0}.glossary dt.active+dd,.glossary dt:target+dd{right:-1.5rem}dl.glossary,main header{grid-column:full;padding:0 2rem 0 var(--navWidth)}@media(min-width:768px){dl.glossary,main header{margin-right:auto;margin-left:var(--navWidth);max-width:var(--content);padding-left:var(--btn)}}@media(max-width:768px){.glossary h2{font-size:var(--txt-medium)}.glossary p{font-size:var(--txt-x-small)}.glossary-index a,.glossary-index li{height:-moz-fit-content;height:fit-content}.glossary-index a{font-size:var(--txt-x-small);min-height:2em;padding:.25rem}body:has(.glossary) h1{font-size:var(--txt-xx-large)}}
+:root{--navWidth:40vw}@media(min-width:768px){:root{--navWidth:22vw}}nav.glossary-index{height:60vh;position:fixed;left:-8px;top:50%;transform:translateY(-50%);width:var(--navWidth);z-index:var(--z-3)}nav.glossary-index>ul{--dir:column;--align:flex-start;--justify:flex-start;--gap:1px;height:100%;max-height:100%;overflow:hidden auto;scroll-behavior:smooth;touch-action:pan-y;width:100%}nav.glossary-index a,nav.glossary-index li{flex:1;height:-moz-max-content;height:max-content;min-height:max(var(--chipchip),-moz-max-content);min-height:max(var(--chipchip),max-content);width:100%}nav.glossary-index a{--justify:center;background-color:rgba(var(--base),var(--op-45));hyphens:auto;padding:.25rem .5rem;word-wrap:anywhere;white-space:wrap}nav.glossary-index a.active,nav.glossary-index a:focus,nav.glossary-index a:hover{background-color:rgba(var(--action-0),var(--op-6));color:var(--action-contrast)}.glossary dd{margin-right:.5rem;width:calc(100% + .75rem)}.glossary dd,.glossary dt{right:0;position:relative;transition:margin var(--trans-base),right var(--trans-base),width var(--trans-base)}.glossary dt.active,.glossary dt:target{color:rgb(var(--action-0));right:-1.5rem;outline:none;padding:0}.glossary dt.active+dd,.glossary dt:target+dd{right:-1.5rem}dl.glossary,main header{grid-column:full;padding:0 2rem 0 var(--navWidth)}@media(min-width:768px){dl.glossary,main header{margin-right:auto;margin-left:var(--navWidth);max-width:var(--content);padding-left:var(--btn)}}@media(max-width:768px){.glossary h2{font-size:var(--txt-medium)}.glossary p{font-size:var(--txt-x-small)}.glossary-index a,.glossary-index li{height:-moz-fit-content;height:fit-content}.glossary-index a{font-size:var(--txt-x-small);min-height:2em;padding:.25rem}body:has(.glossary) h1{font-size:var(--txt-xx-large)}}
diff --git a/build/glossary/style-index.css b/build/glossary/style-index.css
index 2b3f981..eaaadb2 100644
--- a/build/glossary/style-index.css
+++ b/build/glossary/style-index.css
@@ -1 +1 @@
-:root{--navWidth:40vw}@media(min-width:768px){:root{--navWidth:22vw}}nav.glossary-index{height:60vh;position:fixed;right:-8px;top:50%;transform:translateY(-50%);width:var(--navWidth);z-index:var(--z-3)}nav.glossary-index>ul{--dir:column;--align:flex-start;--justify:flex-start;--gap:1px;height:100%;max-height:100%;overflow:hidden auto;scroll-behavior:smooth;touch-action:pan-y;width:100%}nav.glossary-index a,nav.glossary-index li{flex:1;height:-moz-max-content;height:max-content;min-height:max(var(--chipchip),-moz-max-content);min-height:max(var(--chipchip),max-content);width:100%}nav.glossary-index a{--justify:center;background-color:rgba(var(--base-rgb),var(--op-45));hyphens:auto;padding:.25rem .5rem;word-wrap:anywhere;white-space:wrap}nav.glossary-index a.active,nav.glossary-index a:focus,nav.glossary-index a:hover{background-color:rgba(var(--action-rgb),var(--op-6));color:var(--action-contrast)}.glossary dd{margin-left:.5rem;width:calc(100% + .75rem)}.glossary dd,.glossary dt{left:0;position:relative;transition:margin var(--trans-base),left var(--trans-base),width var(--trans-base)}.glossary dt.active,.glossary dt:target{color:var(--action-0);left:-1.5rem;outline:none;padding:0}.glossary dt.active+dd,.glossary dt:target+dd{left:-1.5rem}dl.glossary,main header{grid-column:full;padding:0 var(--navWidth) 0 2rem}@media(min-width:768px){dl.glossary,main header{margin-left:auto;margin-right:var(--navWidth);max-width:var(--content);padding-right:var(--btn)}}@media(max-width:768px){.glossary h2{font-size:var(--txt-medium)}.glossary p{font-size:var(--txt-x-small)}.glossary-index a,.glossary-index li{height:-moz-fit-content;height:fit-content}.glossary-index a{font-size:var(--txt-x-small);min-height:2em;padding:.25rem}body:has(.glossary) h1{font-size:var(--txt-xx-large)}}
+:root{--navWidth:40vw}@media(min-width:768px){:root{--navWidth:22vw}}nav.glossary-index{height:60vh;position:fixed;right:-8px;top:50%;transform:translateY(-50%);width:var(--navWidth);z-index:var(--z-3)}nav.glossary-index>ul{--dir:column;--align:flex-start;--justify:flex-start;--gap:1px;height:100%;max-height:100%;overflow:hidden auto;scroll-behavior:smooth;touch-action:pan-y;width:100%}nav.glossary-index a,nav.glossary-index li{flex:1;height:-moz-max-content;height:max-content;min-height:max(var(--chipchip),-moz-max-content);min-height:max(var(--chipchip),max-content);width:100%}nav.glossary-index a{--justify:center;background-color:rgba(var(--base),var(--op-45));hyphens:auto;padding:.25rem .5rem;word-wrap:anywhere;white-space:wrap}nav.glossary-index a.active,nav.glossary-index a:focus,nav.glossary-index a:hover{background-color:rgba(var(--action-0),var(--op-6));color:var(--action-contrast)}.glossary dd{margin-left:.5rem;width:calc(100% + .75rem)}.glossary dd,.glossary dt{left:0;position:relative;transition:margin var(--trans-base),left var(--trans-base),width var(--trans-base)}.glossary dt.active,.glossary dt:target{color:rgb(var(--action-0));left:-1.5rem;outline:none;padding:0}.glossary dt.active+dd,.glossary dt:target+dd{left:-1.5rem}dl.glossary,main header{grid-column:full;padding:0 var(--navWidth) 0 2rem}@media(min-width:768px){dl.glossary,main header{margin-left:auto;margin-right:var(--navWidth);max-width:var(--content);padding-right:var(--btn)}}@media(max-width:768px){.glossary h2{font-size:var(--txt-medium)}.glossary p{font-size:var(--txt-x-small)}.glossary-index a,.glossary-index li{height:-moz-fit-content;height:fit-content}.glossary-index a{font-size:var(--txt-x-small);min-height:2em;padding:.25rem}body:has(.glossary) h1{font-size:var(--txt-xx-large)}}
diff --git a/build/gmbreviews/style-index-rtl.css b/build/gmbreviews/style-index-rtl.css
index 16e3bff..65d99c0 100644
--- a/build/gmbreviews/style-index-rtl.css
+++ b/build/gmbreviews/style-index-rtl.css
@@ -1 +1 @@
-.gmb-reviews{max-width:none}.gmb-reviews>.row.center{margin:0 auto;max-width:var(--content);--gap:.5rem 6rem}.gmb-reviews>.row.center p{width:-moz-fit-content;width:fit-content}.gmb-reviews .button{display:flex;height:-moz-max-content;height:max-content;margin:0 auto 2rem;width:66.6%}.gmb-reviews .stars{align-items:center;display:inline-flex;flex-wrap:nowrap;justify-content:flex-start}.gmb-reviews ul{list-style:none;margin:0;max-width:var(--full);padding:0}.gmb-reviews ul li{max-width:none;padding:4rem 1rem;width:100%}.gmb-reviews ul li:nth-of-type(odd){background-color:var(--base-50)}.gmb-reviews ul li:nth-of-type(odd) blockquote{--background:var(--base-50)}.gmb-reviews ul li:nth-of-type(2n){background-color:var(--base-100)}.gmb-reviews ul li:nth-of-type(2n) blockquote{--background:var(--base-100)}.gmb-reviews blockquote{margin:0 auto;max-width:var(--content);padding:0}.gmb-reviews blockquote .content,.gmb-reviews blockquote .content:after{border-width:4px 1px}.gmb-reviews blockquote .content:before{border-width:8px;bottom:-4px}.gmb-reviews blockquote cite{position:relative}.gmb-reviews blockquote cite img{right:-8rem;position:absolute;top:0;width:4.5rem}.gmb-reviews blockquote cite p{margin:0}.gmb-reviews blockquote cite .wrap{--wrap:wrap}.gmb-reviews blockquote cite .wrap p,.gmb-reviews blockquote cite .wrap time{max-width:49%}.gmb-reviews blockquote cite .wrap .stars{width:100%}.gmb-reviews blockquote time{white-space:nowrap}.gmb-reviews .stars .icon{background-color:var(--action-0)}.gmb-reviews article{background-color:var(--base);border-radius:var(--radius-outer);padding:1rem}.gmb-reviews article header{--align:center}.gmb-reviews article header>img{right:0;position:relative}.gmb-reviews article time{font-style:italic}.gmb-reviews article .review{padding:1.5rem}.gmb-reviews article h4{width:-moz-max-content;width:max-content}.gmb-reviews article .icon{color:var(--action-0)}.gmb-reviews .footer .button{width:100%}
+.gmb-reviews{max-width:none}.gmb-reviews>.row.center{margin:0 auto;max-width:var(--content);--gap:.5rem 6rem}.gmb-reviews>.row.center p{width:-moz-fit-content;width:fit-content}.gmb-reviews .button{display:flex;height:-moz-max-content;height:max-content;margin:0 auto 2rem;width:66.6%}.gmb-reviews .stars{align-items:center;display:inline-flex;flex-wrap:nowrap;justify-content:flex-start}.gmb-reviews ul{list-style:none;margin:0;max-width:var(--full);padding:0}.gmb-reviews ul li{max-width:none;padding:4rem 1rem;width:100%}.gmb-reviews ul li:nth-of-type(odd){background-color:rgb(var(--base-50))}.gmb-reviews ul li:nth-of-type(odd) blockquote{--background:rgb(var(--base-50))}.gmb-reviews ul li:nth-of-type(2n){background-color:rgb(var(--base-100))}.gmb-reviews ul li:nth-of-type(2n) blockquote{--background:rgb(var(--base-100))}.gmb-reviews blockquote{margin:0 auto;max-width:var(--content);padding:0}.gmb-reviews blockquote .content,.gmb-reviews blockquote .content:after{border-width:4px 1px}.gmb-reviews blockquote .content:before{border-width:8px;bottom:-4px}.gmb-reviews blockquote cite{position:relative}.gmb-reviews blockquote cite img{right:-8rem;position:absolute;top:0;width:4.5rem}.gmb-reviews blockquote cite p{margin:0}.gmb-reviews blockquote cite .wrap{--wrap:wrap}.gmb-reviews blockquote cite .wrap p,.gmb-reviews blockquote cite .wrap time{max-width:49%}.gmb-reviews blockquote cite .wrap .stars{width:100%}.gmb-reviews blockquote time{white-space:nowrap}.gmb-reviews .stars .icon{background-color:rgb(var(--action-0))}.gmb-reviews article{background-color:rgb(var(--base));border-radius:var(--radius-outer);padding:1rem}.gmb-reviews article header{--align:center}.gmb-reviews article header>img{right:0;position:relative}.gmb-reviews article time{font-style:italic}.gmb-reviews article .review{padding:1.5rem}.gmb-reviews article h4{width:-moz-max-content;width:max-content}.gmb-reviews article .icon{color:rgb(var(--action-0))}.gmb-reviews .footer .button{width:100%}
diff --git a/build/gmbreviews/style-index.css b/build/gmbreviews/style-index.css
index 2352340..bfd106b 100644
--- a/build/gmbreviews/style-index.css
+++ b/build/gmbreviews/style-index.css
@@ -1 +1 @@
-.gmb-reviews{max-width:none}.gmb-reviews>.row.center{margin:0 auto;max-width:var(--content);--gap:.5rem 6rem}.gmb-reviews>.row.center p{width:-moz-fit-content;width:fit-content}.gmb-reviews .button{display:flex;height:-moz-max-content;height:max-content;margin:0 auto 2rem;width:66.6%}.gmb-reviews .stars{align-items:center;display:inline-flex;flex-wrap:nowrap;justify-content:flex-start}.gmb-reviews ul{list-style:none;margin:0;max-width:var(--full);padding:0}.gmb-reviews ul li{max-width:none;padding:4rem 1rem;width:100%}.gmb-reviews ul li:nth-of-type(odd){background-color:var(--base-50)}.gmb-reviews ul li:nth-of-type(odd) blockquote{--background:var(--base-50)}.gmb-reviews ul li:nth-of-type(2n){background-color:var(--base-100)}.gmb-reviews ul li:nth-of-type(2n) blockquote{--background:var(--base-100)}.gmb-reviews blockquote{margin:0 auto;max-width:var(--content);padding:0}.gmb-reviews blockquote .content,.gmb-reviews blockquote .content:after{border-width:4px 1px}.gmb-reviews blockquote .content:before{border-width:8px;bottom:-4px}.gmb-reviews blockquote cite{position:relative}.gmb-reviews blockquote cite img{left:-8rem;position:absolute;top:0;width:4.5rem}.gmb-reviews blockquote cite p{margin:0}.gmb-reviews blockquote cite .wrap{--wrap:wrap}.gmb-reviews blockquote cite .wrap p,.gmb-reviews blockquote cite .wrap time{max-width:49%}.gmb-reviews blockquote cite .wrap .stars{width:100%}.gmb-reviews blockquote time{white-space:nowrap}.gmb-reviews .stars .icon{background-color:var(--action-0)}.gmb-reviews article{background-color:var(--base);border-radius:var(--radius-outer);padding:1rem}.gmb-reviews article header{--align:center}.gmb-reviews article header>img{left:0;position:relative}.gmb-reviews article time{font-style:italic}.gmb-reviews article .review{padding:1.5rem}.gmb-reviews article h4{width:-moz-max-content;width:max-content}.gmb-reviews article .icon{color:var(--action-0)}.gmb-reviews .footer .button{width:100%}
+.gmb-reviews{max-width:none}.gmb-reviews>.row.center{margin:0 auto;max-width:var(--content);--gap:.5rem 6rem}.gmb-reviews>.row.center p{width:-moz-fit-content;width:fit-content}.gmb-reviews .button{display:flex;height:-moz-max-content;height:max-content;margin:0 auto 2rem;width:66.6%}.gmb-reviews .stars{align-items:center;display:inline-flex;flex-wrap:nowrap;justify-content:flex-start}.gmb-reviews ul{list-style:none;margin:0;max-width:var(--full);padding:0}.gmb-reviews ul li{max-width:none;padding:4rem 1rem;width:100%}.gmb-reviews ul li:nth-of-type(odd){background-color:rgb(var(--base-50))}.gmb-reviews ul li:nth-of-type(odd) blockquote{--background:rgb(var(--base-50))}.gmb-reviews ul li:nth-of-type(2n){background-color:rgb(var(--base-100))}.gmb-reviews ul li:nth-of-type(2n) blockquote{--background:rgb(var(--base-100))}.gmb-reviews blockquote{margin:0 auto;max-width:var(--content);padding:0}.gmb-reviews blockquote .content,.gmb-reviews blockquote .content:after{border-width:4px 1px}.gmb-reviews blockquote .content:before{border-width:8px;bottom:-4px}.gmb-reviews blockquote cite{position:relative}.gmb-reviews blockquote cite img{left:-8rem;position:absolute;top:0;width:4.5rem}.gmb-reviews blockquote cite p{margin:0}.gmb-reviews blockquote cite .wrap{--wrap:wrap}.gmb-reviews blockquote cite .wrap p,.gmb-reviews blockquote cite .wrap time{max-width:49%}.gmb-reviews blockquote cite .wrap .stars{width:100%}.gmb-reviews blockquote time{white-space:nowrap}.gmb-reviews .stars .icon{background-color:rgb(var(--action-0))}.gmb-reviews article{background-color:rgb(var(--base));border-radius:var(--radius-outer);padding:1rem}.gmb-reviews article header{--align:center}.gmb-reviews article header>img{left:0;position:relative}.gmb-reviews article time{font-style:italic}.gmb-reviews article .review{padding:1.5rem}.gmb-reviews article h4{width:-moz-max-content;width:max-content}.gmb-reviews article .icon{color:rgb(var(--action-0))}.gmb-reviews .footer .button{width:100%}
diff --git a/build/timeline/style-index-rtl.css b/build/timeline/style-index-rtl.css
index 35641a1..49d43a6 100644
--- a/build/timeline/style-index-rtl.css
+++ b/build/timeline/style-index-rtl.css
@@ -1 +1 @@
-main{--gap:0}main section:last-of-type{margin-bottom:0}#at-a-glance{padding:0 10vw;--gap:0}#at-a-glance img{border:2px solid var(--action-0);height:auto;width:100%}#at-a-glance h3{font-size:var(--txt-x-small)}#at-a-glance .before img{border-right:0;border-left-width:1px;border-top:0}#at-a-glance .after img{border-bottom:0;border-right-width:1px;border-left:0}.timeline-point.timeline-point{--lineWidth:1px;--gap:2rem;background-color:var(--base);margin:0;max-width:100vw;overflow:hidden;padding:0;position:relative}.timeline-point.timeline-point img{border-radius:4px;padding:.5rem;position:sticky;width:40%}.timeline-point.timeline-point .info{padding:1rem .5rem .5rem;position:relative;width:60%}.timeline-point.timeline-point .info h2{font-size:var(--txt-medium);margin:0 0 .5rem;position:relative}.timeline-point.timeline-point .info h2 .icon{--w:2.5rem;background-color:var(--action-100);right:-2.5rem;position:absolute;top:.25rem;transform:rotate(90deg)}.timeline-point.timeline-point:after,.timeline-point.timeline-point:before{background-color:var(--action-0);content:"";display:block;height:100%;right:45%;position:absolute;width:var(--lineWidth)}.timeline-point.timeline-point:before{height:1rem}.timeline-point.timeline-point:after{top:4rem}.timeline-point.timeline-point#before-treatment:before,.timeline-point.timeline-point:last-of-type:after{display:none}@media(min-width:768px){#at-a-glance h3{font-size:var(--txt-x-large)}.timeline-point.timeline-point{--gap:4rem}.timeline-point.timeline-point img{width:50%}.timeline-point.timeline-point .info{padding:25vh 1rem 1rem;width:50%}.timeline-point.timeline-point .info h2 .icon{--w:4rem;right:-6.15rem;top:0}.timeline-point.timeline-point .info a{align-items:center;display:flex;flex-wrap:wrap}.timeline-point.timeline-point .info time{font-size:var(--txt-x-small);text-transform:uppercase}.timeline-point.timeline-point:after,.timeline-point.timeline-point:before{right:calc(50% + 2rem)}.timeline-point.timeline-point:before{height:calc(25vh - 2rem)}.timeline-point.timeline-point:after{top:calc(25vh + 6rem)}}
+main{--gap:0}main section:last-of-type{margin-bottom:0}#at-a-glance{padding:0 10vw;--gap:0}#at-a-glance img{border:2px solid rgb(var(--action-0));height:auto;width:100%}#at-a-glance h3{font-size:var(--txt-x-small)}#at-a-glance .before img{border-right:0;border-left-width:1px;border-top:0}#at-a-glance .after img{border-bottom:0;border-right-width:1px;border-left:0}.timeline-point.timeline-point{--lineWidth:1px;--gap:2rem;background-color:rgb(var(--base));margin:0;max-width:100vw;overflow:hidden;padding:0;position:relative}.timeline-point.timeline-point img{border-radius:4px;padding:.5rem;position:sticky;width:40%}.timeline-point.timeline-point .info{padding:1rem .5rem .5rem;position:relative;width:60%}.timeline-point.timeline-point .info h2{font-size:var(--txt-medium);margin:0 0 .5rem;position:relative}.timeline-point.timeline-point .info h2 .icon{--w:2.5rem;background-color:rgb(var(--action-100));right:-2.5rem;position:absolute;top:.25rem;transform:rotate(90deg)}.timeline-point.timeline-point:after,.timeline-point.timeline-point:before{background-color:rgb(var(--action-0));content:"";display:block;height:100%;right:45%;position:absolute;width:var(--lineWidth)}.timeline-point.timeline-point:before{height:1rem}.timeline-point.timeline-point:after{top:4rem}.timeline-point.timeline-point#before-treatment:before,.timeline-point.timeline-point:last-of-type:after{display:none}@media(min-width:768px){#at-a-glance h3{font-size:var(--txt-x-large)}.timeline-point.timeline-point{--gap:4rem}.timeline-point.timeline-point img{width:50%}.timeline-point.timeline-point .info{padding:25vh 1rem 1rem;width:50%}.timeline-point.timeline-point .info h2 .icon{--w:4rem;right:-6.15rem;top:0}.timeline-point.timeline-point .info a{align-items:center;display:flex;flex-wrap:wrap}.timeline-point.timeline-point .info time{font-size:var(--txt-x-small);text-transform:uppercase}.timeline-point.timeline-point:after,.timeline-point.timeline-point:before{right:calc(50% + 2rem)}.timeline-point.timeline-point:before{height:calc(25vh - 2rem)}.timeline-point.timeline-point:after{top:calc(25vh + 6rem)}}
diff --git a/build/timeline/style-index.css b/build/timeline/style-index.css
index 66104be..0d9dbbc 100644
--- a/build/timeline/style-index.css
+++ b/build/timeline/style-index.css
@@ -1 +1 @@
-main{--gap:0}main section:last-of-type{margin-bottom:0}#at-a-glance{padding:0 10vw;--gap:0}#at-a-glance img{border:2px solid var(--action-0);height:auto;width:100%}#at-a-glance h3{font-size:var(--txt-x-small)}#at-a-glance .before img{border-left:0;border-right-width:1px;border-top:0}#at-a-glance .after img{border-bottom:0;border-left-width:1px;border-right:0}.timeline-point.timeline-point{--lineWidth:1px;--gap:2rem;background-color:var(--base);margin:0;max-width:100vw;overflow:hidden;padding:0;position:relative}.timeline-point.timeline-point img{border-radius:4px;padding:.5rem;position:sticky;width:40%}.timeline-point.timeline-point .info{padding:1rem .5rem .5rem;position:relative;width:60%}.timeline-point.timeline-point .info h2{font-size:var(--txt-medium);margin:0 0 .5rem;position:relative}.timeline-point.timeline-point .info h2 .icon{--w:2.5rem;background-color:var(--action-100);left:-2.5rem;position:absolute;top:.25rem;transform:rotate(-90deg)}.timeline-point.timeline-point:after,.timeline-point.timeline-point:before{background-color:var(--action-0);content:"";display:block;height:100%;left:45%;position:absolute;width:var(--lineWidth)}.timeline-point.timeline-point:before{height:1rem}.timeline-point.timeline-point:after{top:4rem}.timeline-point.timeline-point#before-treatment:before,.timeline-point.timeline-point:last-of-type:after{display:none}@media(min-width:768px){#at-a-glance h3{font-size:var(--txt-x-large)}.timeline-point.timeline-point{--gap:4rem}.timeline-point.timeline-point img{width:50%}.timeline-point.timeline-point .info{padding:25vh 1rem 1rem;width:50%}.timeline-point.timeline-point .info h2 .icon{--w:4rem;left:-6.15rem;top:0}.timeline-point.timeline-point .info a{align-items:center;display:flex;flex-wrap:wrap}.timeline-point.timeline-point .info time{font-size:var(--txt-x-small);text-transform:uppercase}.timeline-point.timeline-point:after,.timeline-point.timeline-point:before{left:calc(50% + 2rem)}.timeline-point.timeline-point:before{height:calc(25vh - 2rem)}.timeline-point.timeline-point:after{top:calc(25vh + 6rem)}}
+main{--gap:0}main section:last-of-type{margin-bottom:0}#at-a-glance{padding:0 10vw;--gap:0}#at-a-glance img{border:2px solid rgb(var(--action-0));height:auto;width:100%}#at-a-glance h3{font-size:var(--txt-x-small)}#at-a-glance .before img{border-left:0;border-right-width:1px;border-top:0}#at-a-glance .after img{border-bottom:0;border-left-width:1px;border-right:0}.timeline-point.timeline-point{--lineWidth:1px;--gap:2rem;background-color:rgb(var(--base));margin:0;max-width:100vw;overflow:hidden;padding:0;position:relative}.timeline-point.timeline-point img{border-radius:4px;padding:.5rem;position:sticky;width:40%}.timeline-point.timeline-point .info{padding:1rem .5rem .5rem;position:relative;width:60%}.timeline-point.timeline-point .info h2{font-size:var(--txt-medium);margin:0 0 .5rem;position:relative}.timeline-point.timeline-point .info h2 .icon{--w:2.5rem;background-color:rgb(var(--action-100));left:-2.5rem;position:absolute;top:.25rem;transform:rotate(-90deg)}.timeline-point.timeline-point:after,.timeline-point.timeline-point:before{background-color:rgb(var(--action-0));content:"";display:block;height:100%;left:45%;position:absolute;width:var(--lineWidth)}.timeline-point.timeline-point:before{height:1rem}.timeline-point.timeline-point:after{top:4rem}.timeline-point.timeline-point#before-treatment:before,.timeline-point.timeline-point:last-of-type:after{display:none}@media(min-width:768px){#at-a-glance h3{font-size:var(--txt-x-large)}.timeline-point.timeline-point{--gap:4rem}.timeline-point.timeline-point img{width:50%}.timeline-point.timeline-point .info{padding:25vh 1rem 1rem;width:50%}.timeline-point.timeline-point .info h2 .icon{--w:4rem;left:-6.15rem;top:0}.timeline-point.timeline-point .info a{align-items:center;display:flex;flex-wrap:wrap}.timeline-point.timeline-point .info time{font-size:var(--txt-x-small);text-transform:uppercase}.timeline-point.timeline-point:after,.timeline-point.timeline-point:before{left:calc(50% + 2rem)}.timeline-point.timeline-point:before{height:calc(25vh - 2rem)}.timeline-point.timeline-point:after{top:calc(25vh + 6rem)}}
diff --git a/build/video/style-index-rtl.css b/build/video/style-index-rtl.css
index 25a0db1..7c14dd7 100644
--- a/build/video/style-index-rtl.css
+++ b/build/video/style-index-rtl.css
@@ -1 +1 @@
-.video-cover{display:flex;min-height:75vh;overflow:hidden;position:relative;width:100%}.video-cover .wrap{background-color:var(--contrast-200)}.video-cover .video-container{background-color:var(--action-50);bottom:0;display:flex;right:0;min-height:100%;min-width:100%;position:absolute;left:0;top:0;z-index:0}.video-cover .video-container.fade{animation:fadeIn 1s ease-in}.video-cover .video-container video{filter:grayscale(100%) contrast(1);flex:1 0 100%;mix-blend-mode:multiply;-o-object-fit:cover;object-fit:cover;opacity:.85;pointer-events:none}.video-cover .inner-wrap{color:var(--action-contrast);padding:2rem;position:relative;width:100%;z-index:2}.video-cover .inner-wrap h1,.video-cover .inner-wrap h2,.video-cover .inner-wrap h3,.video-cover .inner-wrap h4,.video-cover .inner-wrap h5,.video-cover .inner-wrap h6{color:var(--action-contrast);margin:2rem 0 0;text-shadow:0 2px 4px rgba(0,0,0,.5);word-spacing:100vw}.video-cover .inner-wrap p{color:var(--action-contrast);letter-spacing:2px;margin:0;text-shadow:0 1px 2px rgba(0,0,0,.5);text-transform:uppercase}.video-cover .inner-wrap .media-text figure{max-width:50%}@media(min-width:768px){.video-cover .inner-wrap .media-text{--align:flex-start;gap:3rem;max-width:var(--content)}}.video-cover .inner-wrap .media-text>div{width:-moz-fit-content;width:fit-content}.video-cover .inner-wrap .buttons a{border-color:var(--action-contrast);color:var(--action-contrast);font-weight:var(--fw-h-bold)}.video-cover .inner-wrap .buttons a:visited,.video-cover .inner-wrap .buttons a:visited:hover{color:var(--action-contrast)}.video-cover .inner-wrap .buttons a:hover{background-color:var(--action-0);color:var(--action-contrast)}.video-cover .inner-wrap .outline a{background-color:rgba(var(--base-rgb),rgba(var(--base-rgb),var(--op-3)))}.video-cover .inner-wrap .buttons{margin:3rem 0}.video-cover .inner-wrap .buttons li{background-color:rgba(var(--action-rgb),var(--op-4))}.video-cover .inner-wrap .wp-block-button__link{text-shadow:none}.video-cover.align-top-left{align-items:flex-start;justify-content:flex-start}.video-cover.align-top-center{align-items:flex-start;justify-content:center}.video-cover.align-top-right{align-items:flex-start;justify-content:flex-end}.video-cover.align-center-left{align-items:center;justify-content:flex-start}.video-cover.align-center{align-items:center;justify-content:center}.video-cover.align-center-right{align-items:center;justify-content:flex-end}.video-cover.align-bottom-left{align-items:flex-end;justify-content:flex-start}.video-cover.align-bottom-center{align-items:flex-end;justify-content:center}.video-cover.align-bottom-right{align-items:flex-end;justify-content:flex-end}.video-cover.alignfull{margin-right:calc(50% - 50vw);margin-left:calc(50% - 50vw);max-width:none;width:100vw}.video-cover.alignwide{max-width:1200px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}
+.video-cover{display:flex;min-height:75vh;overflow:hidden;position:relative;width:100%}.video-cover .wrap{background-color:rgb(var(--contrast-200))}.video-cover .video-container{background-color:rgb(var(--action-50));bottom:0;display:flex;right:0;min-height:100%;min-width:100%;position:absolute;left:0;top:0;z-index:0}.video-cover .video-container.fade{animation:fadeIn 1s ease-in}.video-cover .video-container video{filter:grayscale(100%) contrast(1);flex:1 0 100%;mix-blend-mode:multiply;-o-object-fit:cover;object-fit:cover;opacity:.85;pointer-events:none}.video-cover .inner-wrap{color:var(--action-contrast);padding:2rem;position:relative;width:100%;z-index:2}.video-cover .inner-wrap h1,.video-cover .inner-wrap h2,.video-cover .inner-wrap h3,.video-cover .inner-wrap h4,.video-cover .inner-wrap h5,.video-cover .inner-wrap h6{color:var(--action-contrast);margin:2rem 0 0;text-shadow:0 2px 4px rgba(0,0,0,.5);word-spacing:100vw}.video-cover .inner-wrap p{color:var(--action-contrast);letter-spacing:2px;margin:0;text-shadow:0 1px 2px rgba(0,0,0,.5);text-transform:uppercase}.video-cover .inner-wrap .media-text figure{max-width:50%}@media(min-width:768px){.video-cover .inner-wrap .media-text{--align:flex-start;gap:3rem;max-width:var(--content)}}.video-cover .inner-wrap .media-text>div{width:-moz-fit-content;width:fit-content}.video-cover .inner-wrap .buttons a{border-color:var(--action-contrast);color:var(--action-contrast);font-weight:var(--fw-h-bold)}.video-cover .inner-wrap .buttons a:visited,.video-cover .inner-wrap .buttons a:visited:hover{color:var(--action-contrast)}.video-cover .inner-wrap .buttons a:hover{background-color:rgb(var(--action-0));color:var(--action-contrast)}.video-cover .inner-wrap .outline a{background-color:rgba(var(--base),rgba(var(--base),var(--op-3)))}.video-cover .inner-wrap .buttons{margin:3rem 0}.video-cover .inner-wrap .buttons li{background-color:rgba(var(--action-0),var(--op-4))}.video-cover .inner-wrap .wp-block-button__link{text-shadow:none}.video-cover.align-top-left{align-items:flex-start;justify-content:flex-start}.video-cover.align-top-center{align-items:flex-start;justify-content:center}.video-cover.align-top-right{align-items:flex-start;justify-content:flex-end}.video-cover.align-center-left{align-items:center;justify-content:flex-start}.video-cover.align-center{align-items:center;justify-content:center}.video-cover.align-center-right{align-items:center;justify-content:flex-end}.video-cover.align-bottom-left{align-items:flex-end;justify-content:flex-start}.video-cover.align-bottom-center{align-items:flex-end;justify-content:center}.video-cover.align-bottom-right{align-items:flex-end;justify-content:flex-end}.video-cover.alignfull{margin-right:calc(50% - 50vw);margin-left:calc(50% - 50vw);max-width:none;width:100vw}.video-cover.alignwide{max-width:1200px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}
diff --git a/build/video/style-index.css b/build/video/style-index.css
index 1dd076a..78851c5 100644
--- a/build/video/style-index.css
+++ b/build/video/style-index.css
@@ -1 +1 @@
-.video-cover{display:flex;min-height:75vh;overflow:hidden;position:relative;width:100%}.video-cover .wrap{background-color:var(--contrast-200)}.video-cover .video-container{background-color:var(--action-50);bottom:0;display:flex;left:0;min-height:100%;min-width:100%;position:absolute;right:0;top:0;z-index:0}.video-cover .video-container.fade{animation:fadeIn 1s ease-in}.video-cover .video-container video{filter:grayscale(100%) contrast(1);flex:1 0 100%;mix-blend-mode:multiply;-o-object-fit:cover;object-fit:cover;opacity:.85;pointer-events:none}.video-cover .inner-wrap{color:var(--action-contrast);padding:2rem;position:relative;width:100%;z-index:2}.video-cover .inner-wrap h1,.video-cover .inner-wrap h2,.video-cover .inner-wrap h3,.video-cover .inner-wrap h4,.video-cover .inner-wrap h5,.video-cover .inner-wrap h6{color:var(--action-contrast);margin:2rem 0 0;text-shadow:0 2px 4px rgba(0,0,0,.5);word-spacing:100vw}.video-cover .inner-wrap p{color:var(--action-contrast);letter-spacing:2px;margin:0;text-shadow:0 1px 2px rgba(0,0,0,.5);text-transform:uppercase}.video-cover .inner-wrap .media-text figure{max-width:50%}@media(min-width:768px){.video-cover .inner-wrap .media-text{--align:flex-start;gap:3rem;max-width:var(--content)}}.video-cover .inner-wrap .media-text>div{width:-moz-fit-content;width:fit-content}.video-cover .inner-wrap .buttons a{border-color:var(--action-contrast);color:var(--action-contrast);font-weight:var(--fw-h-bold)}.video-cover .inner-wrap .buttons a:visited,.video-cover .inner-wrap .buttons a:visited:hover{color:var(--action-contrast)}.video-cover .inner-wrap .buttons a:hover{background-color:var(--action-0);color:var(--action-contrast)}.video-cover .inner-wrap .outline a{background-color:rgba(var(--base-rgb),rgba(var(--base-rgb),var(--op-3)))}.video-cover .inner-wrap .buttons{margin:3rem 0}.video-cover .inner-wrap .buttons li{background-color:rgba(var(--action-rgb),var(--op-4))}.video-cover .inner-wrap .wp-block-button__link{text-shadow:none}.video-cover.align-top-left{align-items:flex-start;justify-content:flex-start}.video-cover.align-top-center{align-items:flex-start;justify-content:center}.video-cover.align-top-right{align-items:flex-start;justify-content:flex-end}.video-cover.align-center-left{align-items:center;justify-content:flex-start}.video-cover.align-center{align-items:center;justify-content:center}.video-cover.align-center-right{align-items:center;justify-content:flex-end}.video-cover.align-bottom-left{align-items:flex-end;justify-content:flex-start}.video-cover.align-bottom-center{align-items:flex-end;justify-content:center}.video-cover.align-bottom-right{align-items:flex-end;justify-content:flex-end}.video-cover.alignfull{margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);max-width:none;width:100vw}.video-cover.alignwide{max-width:1200px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}
+.video-cover{display:flex;min-height:75vh;overflow:hidden;position:relative;width:100%}.video-cover .wrap{background-color:rgb(var(--contrast-200))}.video-cover .video-container{background-color:rgb(var(--action-50));bottom:0;display:flex;left:0;min-height:100%;min-width:100%;position:absolute;right:0;top:0;z-index:0}.video-cover .video-container.fade{animation:fadeIn 1s ease-in}.video-cover .video-container video{filter:grayscale(100%) contrast(1);flex:1 0 100%;mix-blend-mode:multiply;-o-object-fit:cover;object-fit:cover;opacity:.85;pointer-events:none}.video-cover .inner-wrap{color:var(--action-contrast);padding:2rem;position:relative;width:100%;z-index:2}.video-cover .inner-wrap h1,.video-cover .inner-wrap h2,.video-cover .inner-wrap h3,.video-cover .inner-wrap h4,.video-cover .inner-wrap h5,.video-cover .inner-wrap h6{color:var(--action-contrast);margin:2rem 0 0;text-shadow:0 2px 4px rgba(0,0,0,.5);word-spacing:100vw}.video-cover .inner-wrap p{color:var(--action-contrast);letter-spacing:2px;margin:0;text-shadow:0 1px 2px rgba(0,0,0,.5);text-transform:uppercase}.video-cover .inner-wrap .media-text figure{max-width:50%}@media(min-width:768px){.video-cover .inner-wrap .media-text{--align:flex-start;gap:3rem;max-width:var(--content)}}.video-cover .inner-wrap .media-text>div{width:-moz-fit-content;width:fit-content}.video-cover .inner-wrap .buttons a{border-color:var(--action-contrast);color:var(--action-contrast);font-weight:var(--fw-h-bold)}.video-cover .inner-wrap .buttons a:visited,.video-cover .inner-wrap .buttons a:visited:hover{color:var(--action-contrast)}.video-cover .inner-wrap .buttons a:hover{background-color:rgb(var(--action-0));color:var(--action-contrast)}.video-cover .inner-wrap .outline a{background-color:rgba(var(--base),rgba(var(--base),var(--op-3)))}.video-cover .inner-wrap .buttons{margin:3rem 0}.video-cover .inner-wrap .buttons li{background-color:rgba(var(--action-0),var(--op-4))}.video-cover .inner-wrap .wp-block-button__link{text-shadow:none}.video-cover.align-top-left{align-items:flex-start;justify-content:flex-start}.video-cover.align-top-center{align-items:flex-start;justify-content:center}.video-cover.align-top-right{align-items:flex-start;justify-content:flex-end}.video-cover.align-center-left{align-items:center;justify-content:flex-start}.video-cover.align-center{align-items:center;justify-content:center}.video-cover.align-center-right{align-items:center;justify-content:flex-end}.video-cover.align-bottom-left{align-items:flex-end;justify-content:flex-start}.video-cover.align-bottom-center{align-items:flex-end;justify-content:center}.video-cover.align-bottom-right{align-items:flex-end;justify-content:flex-end}.video-cover.alignfull{margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);max-width:none;width:100vw}.video-cover.alignwide{max-width:1200px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}
diff --git a/inc/admin/Integrations.php b/inc/admin/Integrations.php
index fea51c0..15abaf2 100644
--- a/inc/admin/Integrations.php
+++ b/inc/admin/Integrations.php
@@ -403,10 +403,10 @@
 
 
 				--scrollbar-width: 8px;
-				--scrollbar-track-color: var(--base-100);
-				--scrollbar-thumb-color: var(--action-0);
-				--scrollbar-thumb-hover-color: var(--action-50);
-				--scrollbar-thumb-border: 2px solid var(--base-50);
+				--scrollbar-track-color: rgb(var(--base-100));
+				--scrollbar-thumb-color: rgb(var(--action-0));
+				--scrollbar-thumb-hover-color: rgb(var(--action-50));
+				--scrollbar-thumb-border: 2px solid rgb(var(--base-50));
 				--scrollbar-border-radius: 4px;
 			}
 			.item-grid.integrations {
diff --git a/inc/blocks/CustomBlocks.php b/inc/blocks/CustomBlocks.php
index 0b5830e..0a9cc31 100644
--- a/inc/blocks/CustomBlocks.php
+++ b/inc/blocks/CustomBlocks.php
@@ -6,7 +6,9 @@
 use JVBase\managers\Cache;
 use JVBase\managers\LoginManager;
 use JVBase\managers\SEO\BreadcrumbManager;
+use JVBase\managers\SEO\render\Thing\CreativeWork\MediaObject\VideoObject;
 use JVBase\utility\Image;
+use JVBase\utility\Video;
 use WP_Block;
 use WP_Query;
 
@@ -22,11 +24,13 @@
 	protected static ?int $currentQueryId = null;
 	protected static array $counters = [];
 	protected static ?WP_Query $originalQuery = null;
-	protected array $ignore = ['align','alt','area','backgroundColor','borderColor','buttonText','buttonPosition','buttonUseIcon','categories','className','columns','contentPosition','customOverlayColor','dimRatio','displayAsDropdown','displayAuthor','displayFeaturedImage','displayPostContent','displayPostContentRadio','displayPostDate','excerptLength','featuredImageAlign','fontSize','gradient','height','iconColor','iconColorValue','iconColorValue','iconBackgroundColor','iconBackgroundColorValue','id','imageFill','isDark','isLink','isSearchFieldHidden','isStackedOnMobile','isUserOverlayColor','kind','label','largestFontSize','layout','level','mediaId','mediaLink','mediaSizeSlug','mediaType','metadata','minHeight','minHeightUnit','opacity','opensInNewTab','order','orderBy','ordered','overlayMenu','placeholder','postLayout','postsToShow','query', 'queryId','ref','rel','shouldSyncIcon','showEmpty','showHierarchy','showLabel','showLabels','showOnlyTopLevel','showPostCounts','showTagCounts','size','sizeSlug','slug','smallestFontSize','tagName','taxonomy','term','textAlign','textColor','theme','title','type','url','useFeaturedImage','width','widthUnit',];
+	protected array $ignore = ['align','alt','area','aspectRatio','backgroundColor','borderColor','buttonText','buttonPosition','buttonUseIcon','categories','className','columns','contentPosition','customOverlayColor','dimRatio','displayAsDropdown','displayAuthor','displayFeaturedImage','displayPostContent','displayPostContentRadio','displayPostDate','excerptLength','featuredImageAlign','fontSize','gradient','hasFixedLayout','hasParallax','height','iconColor','iconColorValue','iconColorValue','iconBackgroundColor','iconBackgroundColorValue','id','imageFill','isDark','isLink','isObjectPosition','isRepeated','isSearchFieldHidden','isStackedOnMobile','isUserOverlayColor','kind','label','largestFontSize','layout','lightbox','linkDestination','linkTo','level','mediaId','mediaLink','mediaPosition','mediaSizeSlug','mediaType','mediaWidth','metadata','minHeight','minHeightUnit','opacity','opensInNewTab','order','orderBy','ordered','overlayColor','overlayMenu','placeholder','postLayout','postsToShow','query', 'queryId','ref','rel','scale','shouldSyncIcon','showContent','showEmpty','showHierarchy','showLabel','showLabels','showOnlyTopLevel','showPostCounts','showTagCounts','size','sizeSlug','slug','smallestFontSize','tagName','taxonomy','term','textAlign','textColor','theme','title','type','url','useFeaturedImage','verticalAlignment','width','widthUnit',];
 
 	//For custom style output for nested links, etc
 	protected static array $pendingStyles = [];
 	protected static array $pendingClass = [];
+	protected static bool $renderGallery = false;
+
     public function __construct()
     {
         $this->cache = Cache::for('blocks', WEEK_IN_SECONDS);
@@ -203,8 +207,11 @@
     {
 //		jvbDump($block, 'buttons');
 //		jvbDump($parent, 'Parent');
-        return '<ul'.$this->getClassesAndStyles($block['attrs']??[], ['buttons','row']).'>'.
-               $this->innerBlocks($block).'</ul>';
+        return sprintf(
+			'<ul%s>%s</ul>',
+			$this->getClassesAndStyles($block['attrs']??[], ['buttons','row']),
+               $this->innerBlocks($block)
+		);
     }
 
     public function prerender_core_column(array $block, ?string $content, ?WP_Block $parent):?string
@@ -215,9 +222,11 @@
                    array_key_exists('width', $block['attrs'])) ?
             ['flex-basis:'.$block['attrs']['width']]
             : [];
-        return '<div'.
-               $this->getClassesAndStyles($block['attrs']??[], ['col'], $styles).'>'.
-               $this->innerBlocks($block).'</div>';
+        return sprintf(
+			'<div%s>%s</div>',
+               $this->getClassesAndStyles($block['attrs']??[], ['col'], $styles),
+               $this->innerBlocks($block)
+		);
     }
 
     public function prerender_core_columns(array $block, ?string $content, ?WP_Block $parent):?string
@@ -295,8 +304,10 @@
 
 //		jvbDump($block, 'spsacer');
 //		jvbDump($parent, 'Parent');
-        return '<div'.$this->getClassesAndStyles($block['attrs']??[], ['spacer'], ['height:2rem']).
-               ' aria-hidden="true"></div>';
+        return sprintf(
+			'<div%s aria-hidden="true"></div>',
+			$this->getClassesAndStyles($block['attrs']??[], ['spacer'], ['height:2rem'])
+		);
     }
     //core_table_of_contents
     //core_text_columns
@@ -309,22 +320,31 @@
      * Media Blocks
      */
     //core_audio
+	public function prerender_core_audio(array $block, ?string $content, ?WP_Block $parent):?string
+	{
+//		jvbDump($block,'audio');
+		$attrs = $block['attrs']??[];
+		$inside = $this->inside($block);
+		return sprintf('<figure%s>%s</figure>',
+			$this->getClassesAndStyles($attrs),
+			$inside
+		);
+	}
     public function prerender_core_cover(array $block, ?string $content, ?WP_Block $parent):?string
     {
 //		jvbDump($block, 'cover');
 //		jvbDump($parent, 'Parent');
         // Extract block attributes
         $attrs = $block['attrs'] ?:[];
+
         $innerContent = $this->innerBlocks($block);
 
 		$position = 'object-position: center;';
 		if (array_key_exists('focalPoint', $attrs)) {
-			$x = (array_key_exists('x', $attrs['focalPoint'])) ? ($attrs['focalPoint']['x'] * 100).'%' : 'center';
-			$y = (array_key_exists('y', $attrs['focalPoint'])) ? ($attrs['focalPoint']['y'] * 100).'%' : 'center';
-			$position = 'object-position:'.$x.' '.$y.';';
-			unset($attrs['focalPoint']);
+			$attrs['isObjectPosition'] = true;
 		}
 
+
         // Check for background type
         $backgroundType = $attrs['backgroundType'] ?? 'image';
         $background = '';
@@ -337,33 +357,93 @@
 			$ID = (int)$attrs['id'];
 		}
 
-        if ($backgroundType === 'image' && $ID) {
+
+		$doImage = true;
+		if ($this->checkAttrs('hasParallax', $attrs) || $this->checkAttrs('isRepeated', $attrs)) {
+			$doImage = false;
+			$attrs['style']['background']['backgroundImage']['id'] = $ID;
+		}
+
+        if ($doImage && $backgroundType === 'image' && $ID) {
 			$background .= str_replace('<img', '<img style="'.$position.'"', $this->image($ID));
         } elseif ($backgroundType === 'video' && isset($attrs['url'])) {
             $background .= '<video style="'.$position.'"autoplay muted loop playsinline src="' . esc_url($attrs['url']) . '"></video>';
         }
 
+		$overlay = '';
+		if (!isset($attrs['style']['color']['duotone']) && (array_key_exists('overlayColor', $attrs) || array_key_exists('dimRatio', $attrs))) {
+			$tmp = [];
+			if (array_key_exists('overlayColor', $attrs)) {
+				$tmp['overlayColor'] = $attrs['overlayColor'];
+			}
+			if (array_key_exists('dimRatio', $attrs)) {
+				$tmp['dimRatio'] = $attrs['dimRatio'];
+			}
+			unset($attrs['overlayColor']);
+			unset($attrs['dimRatio']);
+			$overlay = sprintf(
+				'<div class="overlay"%s></div>',
+				$this->buildStylesString($tmp)
+			);
+		}
+
 		// Build classes and styles
 		unset($attrs['url']);
 		$classes = $this->getClassesAndStyles($attrs, ['cover row']);
 
 
-		return '<section' . $classes . '>' .
-               $background .
-               '<div class="content">' .
-               $innerContent .
-               '</div></section>';
+
+		return sprintf('<section%s>%s%s<div class="content">%s</div></section>',
+			$classes,
+			$overlay,
+			$background,
+			$innerContent
+		);
     }
 
     //core_file
+	public function prerender_core_file(array $block, ?string $content, ?WP_Block $parent):?string
+	{
+		$attrs = $block['attrs']??[];
+
+		$showButton = !array_key_exists('showDownloadButton', $attrs);
+		preg_match('/>([^<]*)<\/a>/', $block['innerHTML'], $label);
+		$label = $label[1]??'';
+		$button = $showButton ?
+			sprintf(
+				'&emsp;<a class="btn chip" href="%s">%s<span>Download</span></a>',
+				$attrs['href'],
+				jvbIcon('cloud-arrow-down')
+			) :
+			'';
+
+		$aOpen = $showButton ? '' :
+			sprintf(
+				'<a href="%s">',
+				$attrs['href']
+			);
+		$aClose = $showButton ? '' : '</a>';
+		return sprintf(
+			'<p%s>%s%s%s%s</p>',
+			$this->getClassesAndStyles($attrs, ['file']),
+			$aOpen,
+			$showButton ? $label : 'Download: '.$label,
+			$aClose,
+			$button
+		);
+	}
 
     public function prerender_core_gallery(array $block, ?string $content, ?WP_Block $parent):?string
     {
 //		jvbDump($block, 'gallery');
+		$attrs = $block['attrs']??[];
 //		jvbDump($parent, 'Parent');
-        return '<ul'.$this->getClassesAndStyles($block['attrs']??[], ['gallery']).'>'.
-               $this->innerBlocks($block,'<li>', '</li>').
-               '</ul>';
+		static::$renderGallery = true;
+        return sprintf(
+		'<ul%s>%s</ul>',
+			$this->getClassesAndStyles($attrs, ['gallery']),
+			$this->innerBlocks($block,'<li>', '</li>')
+	   );
     }
 
     public function prerender_core_image(array $block, ?string $content, ?WP_Block $parent):?string
@@ -375,6 +455,10 @@
             return '';
         }
 
+		$attrs = $block['attrs']??[];
+
+		static::$renderGallery = true;
+
         $title = (get_the_title($ID) !== '') ? '<b>'.get_the_title($ID).'</b>' : '';
         $caption = (wp_get_attachment_caption($ID)) ?
             '<figcaption>' .
@@ -382,11 +466,23 @@
                 wp_get_attachment_caption($ID) .
             '</figcaption>' :
             '<figcaption>' . $title . '</figcaption>';
-		$size = array_key_exists('sizeSlug', $block['attrs']??[]) ? $block['attrs']['sizeSlug'] : 'large';
-        return '<figure'.
-               $this->getClassesAndStyles($block['attrs']??[]).'>'.
-               $this->imageLink(true, $ID, 'tiny', $size) .
-               $caption.'</figure>';
+		$size = $attrs['sizeSlug'] ?? 'large';
+		$img = $this->imageLink(true, $ID, 'tiny', $size);
+
+		$aspectRatio = $attrs['aspectRatio']??false;
+		if ($aspectRatio) {
+			$img = str_replace('<img', sprintf(
+				'<img style="aspect-ratio:%s;"',
+				$aspectRatio
+			), $img);
+		}
+
+        return sprintf(
+			'<figure%s>%s%s</figure>',
+               $this->getClassesAndStyles($block['attrs']??[]),
+               $img,
+               $caption,
+		);
     }
 
     public function prerender_core_media_text(array $block, ?string $content, ?WP_Block $parent):?string
@@ -408,13 +504,35 @@
 			$classes[] = 'stack-small';
 		}
 
+		$figClasses = [];
+		if (isset($attrs['mediaWidth'])) {
+			$figClasses[] = 'width:'.$attrs['mediaWidth'].'%';
+		}
+		if (isset($attrs['imageFill']) && $attrs['imageFill'] === true) {
+			$figClasses[] = 'object-fit: cover';
+		}
+		if (array_key_exists('focalPoint', $attrs)) {
+			$attrs['isObjectPosition'] = true;
+			$style = $this->getFocalPointStyle($attrs['focalPoint'], $attrs);
+			$style .= ';object-fit:none;';
+			$imgLink = str_replace('<img', sprintf(
+				'<img style="%s"',
+				$style
+			), $imgLink);
+			unset($attrs['focalPoint']);
+		}
+
+
+		$figClasses = empty($figClasses) ? '' : ' style="'.implode(';',$figClasses).'"';
+
+
 		$inside = array_key_exists('mediaPosition', $attrs) && $attrs['mediaPosition'] === 'right'
 			? sprintf(
-				'<div>%s</div><figure>%s</figure>',
-				$inner, $imgLink
+				'<div>%s</div><figure%s>%s</figure>',
+				$inner,$figClasses, $imgLink
 			) : sprintf(
-				'<figure>%s</figure><div>%s</div>',
-				$imgLink, $inner
+				'<figure%s>%s</figure><div>%s</div>',
+				$figClasses,$imgLink, $inner
 			);
 
         return sprintf(
@@ -427,27 +545,31 @@
 
 	public function prerender_core_video(array $block, ?string $content, ?WP_Block $parent):?string
 	{
-		jvbDump($block, 'video');
+//		jvbDump($block, 'video');
 //		jvbDump($parent, 'Parent');
-		$ID = $this->imageID('', $block);
-		if (!$ID) {
-			return '';
-		}
 
-		jvbDump($ID);
+		$attrs = $block['attrs']??[];
+//
+//		$ID = $attrs['id']??false;
+//		if (!$ID) {
+//			return '';
+//		}
+//		$caption = wp_get_attachment_caption($ID);
+//		$title = get_the_title($ID);
+//
+//		$figCaption = sprintf(
+//			'<figcaption><b>%s</b>%s</figcaption>',
+//			$title,
+//			$caption
+//		);
+//
+//		$video = Video::get($ID);
 
-		$title = (get_the_title($ID) !== '') ? '<b>'.get_the_title($ID).'</b>' : '';
-		$caption = (wp_get_attachment_caption($ID)) ?
-			'<figcaption>' .
-			$title .
-			wp_get_attachment_caption($ID) .
-			'</figcaption>' :
-			'<figcaption>' . $title . '</figcaption>';
-		$size = array_key_exists('sizeSlug', $block['attrs']??[]) ? $block['attrs']['sizeSlug'] : 'large';
-		return '<figure'.
-			$this->getClassesAndStyles($block['attrs']??[]).'>'.
-			$this->imageLink(true, $ID, 'tiny', $size) .
-			$caption.'</figure>';
+		$inside = $this->inside($block);
+		return sprintf('<figure%s>%s</figure>',
+			$this->getClassesAndStyles($attrs),
+			$inside
+		);
 	}
 
     /**
@@ -458,18 +580,56 @@
     /**
      * Text Blocks
     */
-    //prerender_core_code
-    //prerender_core_details
+    public function prerender_core_code(array $block, ?string $content, ?WP_Block $parent):?string
+	{
+//		jvbDump($block, 'code');
+		$attrs = $block['attrs']??[];
+		$content = $this->inside($block);
+
+		return str_replace('<code', sprintf(
+			'<code%s',
+			$this->getClassesAndStyles($attrs),
+		), $content);
+	}
+    public function prerender_core_details(array $block, ?string $content, ?WP_Block $parent):?string
+	{
+//		jvbDump($block, 'details');
+		$attrs = $block['attrs']??[];
+		$isOpen = $this->checkAttrs('showContent', $attrs);
+		$summary = $this->extractElement($block['innerHTML'], 'summary');
+		$inside = $this->innerBlocks($block);
+
+		return sprintf(
+			'<details%s%s><summary>%s</summary>%s</details>',
+			$this->getClassesAndStyles($attrs),
+			$isOpen ? ' open' : '',
+			$summary,
+			$inside
+		);
+	}
     //prerender_core_footnotes
+//	public function prerender_core_footnotes(array $block, ?string $content, ?WP_Block $parent):?string
+//	{
+//		jvbDump($block, 'footnotes');
+//
+//		return null;
+//	}
     //prerender_core_classic
     public function prerender_core_heading(array $block, ?string $content, ?WP_Block $parent):?string
     {
-        $level = (array_key_exists('level', $block['attrs']??[])) ? $block['attrs']['level'] : '2';
+//		jvbDump($block, 'heading');
+		$attrs = $block['attrs']??[];
+        $level = $attrs['level'] ?? '2';
 		$content = $this->inside($block);
         $id = sanitize_title(wp_strip_all_tags($this->stripTagContents('small', $content)));
-        return '<h'.$level.' id="'.$id.'"'.$this->getClassesAndStyles($block['attrs']??[]).'>'.
-               $content.
-               '</h'.$level.'>';
+        return sprintf(
+		'<h%s id="%s"%s>%s</h%s>',
+		   $level,
+		   $id,
+			$this->getClassesAndStyles($attrs),
+		   $content,
+		   $level,
+		);
     }
 
 	public function prerender_core_list(array $block, ?string $content, ?WP_Block $parent):?string
@@ -477,8 +637,13 @@
 //		jvbDump($block, 'list');
 //		jvbDump($parent, 'Parent');
 		$tag = (array_key_exists('ordered', $block['attrs']??[])) ? 'ol' : 'ul';
-		$output = '<'.$tag.$this->getClassesAndStyles($block['attrs']??[]).'>'.$this->innerBlocks($block).'</'.$tag.'>';
-		return $output;
+		return sprintf(
+			'<%s%s>%s</%s>',
+			$tag,
+			$this->getClassesAndStyles($block['attrs']??[]),
+			$this->innerBlocks($block),
+			$tag
+		);
 	}
 
 //	public function prerender_core_list_item(array $block):string
@@ -489,7 +654,7 @@
 
     public function prerender_core_paragraph(array $block, ?string $content, ?WP_Block $parent):?string
     {
-//		jvbDump($block, 'paragraph');
+		jvbDump($block, 'paragraph');
 //		jvbDump($parent, 'Parent');
 		$inside = $this->inside($block);
         return empty($inside) ? '' : sprintf(
@@ -516,10 +681,13 @@
 			$content = $this->stripTagContents('cite', $content);
 		}
 
-		return '<blockquote'.$this->getClassesAndStyles($block['attrs']??[]).'>
-        <div class="content">'.$content.'</div>'.
-			$citeHtml.
-			'</blockquote>';
+		return sprintf(
+			'<blockquote%s>%s%s%s</blockquote>',
+			$this->getClassesAndStyles($block['attrs']??[]),
+			jvbIcon('quotes',['style' => 'fill']),
+        	$content,
+			$citeHtml
+		);
 	}
 	public function prerender_core_pullquote(array $block, ?string $content, ?WP_Block $parent):?string
 	{
@@ -540,13 +708,58 @@
 		}
 		$content = jvb_filter_content( $content);
 
-		return '<blockquote'.$this->getClassesAndStyles($block['attrs']??[], ['pull']).'>'.
-        	$content.
-			$citeHtml.
-			'</blockquote>';
+		return sprintf(
+			'<blockquote%s>%s%s</blockquote>',
+			$this->getClassesAndStyles($block['attrs']??[], ['pull']),
+        	$content,
+			$citeHtml
+		);
 	}
-    //prerender_core_table
-    //prerender_core_verse
+    public function prerender_core_table(array $block, ?string $content, ?WP_Block $parent):?string
+	{
+//		jvbDump($block, 'table');
+		$attrs = $block['attrs']??[];
+		$figAttrs = [
+			'align' => $attrs['align']??''
+		];
+		unset($attrs['align']);
+
+		$inside = $this->inside($block);					// inside the figure
+		$parts = explode('<figcaption', $inside);	// inside the table
+		$table = $parts[0];
+		$table = str_replace(strtok($table, '>'),sprintf(
+			'<table%s',
+			$this->getClassesAndStyles($attrs)
+		), $table);
+		$caption = str_replace(strtok($parts[1], '>'), '<figcaption', $parts[1]);
+
+		return sprintf(
+			'<figure%s>%s%s</figure>',
+			$this->buildClassesString($figAttrs),
+			$table,
+			$caption
+		);
+	}
+    public function prerender_core_preformatted(array $block, ?string $content, ?WP_Block $parent):?string
+	{
+//		jvbDump($block, 'verse');
+		$attrs = $block['attrs']??[];
+		return sprintf(
+			'<pre%s>%s</pre>',
+			$this->getClassesAndStyles($attrs),
+			$this->inside($block)
+		);
+	}
+    public function prerender_core_verse(array $block, ?string $content, ?WP_Block $parent):?string
+	{
+//		jvbDump($block, 'verse');
+		$attrs = $block['attrs']??[];
+		return sprintf(
+			'<pre%s>%s</pre>',
+			$this->getClassesAndStyles($attrs),
+			$this->inside($block)
+		);
+	}
 
     /**
      * Theme Blocks
@@ -754,7 +967,12 @@
         $linkOpen = $this->buildNavigationLink($attrs, $aria);
 
 
-        return '<li'.$classes.'>'.$linkOpen.$block['attrs']['label'].'</a></li>';
+        return sprintf(
+			'<li%s>%s%s</a></li>',
+			$classes,
+			$linkOpen,
+			$block['attrs']['label']
+		);
     }
 
     public function prerender_core_navigation_submenu(array $block, ?string $content, ?WP_Block $parent):?string
@@ -829,7 +1047,14 @@
 					break;
             }
         }
-        return '<a href="'.$url.'"'.$aria.$rel.$target.$title.'>';
+        return sprintf(
+			'<a href="%s"%s%s%s%s>',
+			$url,
+			$aria,
+			$rel,
+			$target,
+			$title
+		);
     }
 
     /**
@@ -952,6 +1177,10 @@
             $result = $this->innerBlocks($block);
         }
 
+		if(static::$renderGallery) {
+			add_action('wp_footer', 'jvbRenderGallery');
+		}
+
 		return apply_filters('jvb_post_content_output', $result, $block);
     }
     //core_post_date
@@ -1045,20 +1274,23 @@
 		global $post;
 		$attrs = $block['attrs']??[];
 		$ID = get_post_thumbnail_id($post->ID);
-		$aspectRatio = $aOpen = $aClose = '';
+		$aOpen = $aClose = '';
 		if(!is_single($post->ID) && $this->checkAttrs('isLink', $attrs)) {
 			$aOpen = '<a href="'.get_the_permalink($post->ID).'">';
 			$aClose = '</a>';
 		}
-		if (array_key_exists('aspectRatio', $attrs)) {
-			$aspectRatio = $attrs['aspectRatio'];
-		}
 
 		$img = apply_filters('jvbCoreFeaturedImage', '', $post->post_type, $attrs);
 
 		if (empty($img)) {
 			$img = $this->image($ID);
-			$img = empty($aspectRatio) ? $img : str_replace('<img', '<img style="aspect-ratio:'.$aspectRatio.';"', $img);
+		}
+		$aspectRatio = $attrs['aspectRatio']??false;
+		if ($aspectRatio) {
+			$img = str_replace('<img', sprintf(
+				'<img style="aspect-ratio:%s;"',
+				$aspectRatio
+			), $img);
 		}
 
 
@@ -2210,7 +2442,7 @@
 	 * @param string $tag The tag name to extract
 	 * @return string The content of the first matching element, or empty string
 	 */
-	protected function extractElement(string $html, string $tag): string
+	public function extractElement(string $html, string $tag): string
 	{
 		if (empty($html)) {
 			return '';
@@ -2344,51 +2576,64 @@
         return $out;
     }
 
-    protected function getClassesAndStyles(
+    public function getClassesAndStyles(
         array $attrs,
         array $classes = [],
         array $styles = []
     ):string {
-        // Get styles and classes from attributes
-        $attr_styles = $this->getInlineStyles($attrs);
-        $attr_classes = $this->getClasses($attrs);
-
-		if(array_key_exists('slug', $attrs) && $attrs['slug'] === 'footer') {
-			$classes[] = 'col';
-		}
-
-
-        // Merge with passed classes and styles
-        $styles = array_merge($attr_styles, $styles);
-        $classes = array_merge($attr_classes, $classes);
-
-		if (!empty(static::$pendingClass)) {
-			$classes = array_merge($classes, static::$pendingClass);
-			static::$pendingClass = [];
-		}
-		$classes = array_unique($classes);
-		$data = $this->getDataset($attrs);
-
-        // Build attribute strings
-        $class_string = !empty($classes) ? ' class="' . implode(' ', $classes) . '"' : '';
-        $style_string = !empty($styles) ? ' style="' . implode(';', $styles) . '"' : '';
-		$data_string = '';
-		if (!empty($data)) {
-			foreach ($data as $d => $v) {
-				if ($d === 'bg-small') {
-					$data_string .= ' data-bg-img';
-				}
-				$data_string .= sprintf(
-					' data-%s="%s"',
-					$d,
-					$v
-				);
-			}
-		}
-
-        $return = trim($class_string . $style_string . $data_string);
+        $return = trim($this->buildClassesString($attrs, $classes) . $this->buildStylesString($attrs,$styles) . $this->buildDataset($attrs));
         return ($return=='')? '' : ' '.$return;
     }
+		protected function buildStylesString(array $attrs, array $custom = []):string
+		{
+			$attr_styles = $this->getInlineStyles($attrs);
+			$styles = array_merge($attr_styles, $custom);
+
+			$styles = array_map(function ($property, $value) {
+				return sprintf('%s:%s', $property, $value);
+			}, array_keys($styles), $styles);
+
+			return !empty($styles) ? ' style="' . implode(';', $styles) . '"' : '';
+		}
+
+		protected function buildClassesString(array $attrs, array $custom = []):string
+		{
+			$attr_classes = $this->getClasses($attrs);
+			if(array_key_exists('slug', $attrs) && $attrs['slug'] === 'footer') {
+				$attr_classes[] = 'col';
+			}
+
+			// Merge with passed classes and styles
+			$classes = array_merge($attr_classes, $custom);
+
+			if (!empty(static::$pendingClass)) {
+				$classes = array_merge($classes, static::$pendingClass);
+				static::$pendingClass = [];
+			}
+			$classes = array_unique($classes);
+
+			// Build attribute strings
+			return !empty($classes) ? ' class="' . implode(' ', $classes) . '"' : '';
+		}
+
+		protected function buildDataset(array $attrs):string
+		{
+			$data = $this->getDataset($attrs);
+			$data_string = '';
+			if (!empty($data)) {
+				foreach ($data as $d => $v) {
+					if ($d === 'bg-small') {
+						$data_string .= ' data-bg-img';
+					}
+					$data_string .= sprintf(
+						' data-%s="%s"',
+						$d,
+						$v
+					);
+				}
+			}
+			return $data_string;
+		}
     /**
      * @param string $spacing
      *
@@ -2434,6 +2679,7 @@
                 return match ($value) {
                     'is-style-floating' => 'always mobile fixed',
 					'is-style-fixed' => 'fixed bottom',
+					'is-style-default' => '',
                     default => str_replace('is-style-', '', $value),
                 };
 			case 'contentPosition':
@@ -2465,7 +2711,7 @@
             case 'width':
 				return $this->getWidth($value);
             case 'dimRatio':
-                return $this->getDimRatio($value);
+                return $this->getDimRatio($value, $attrs);
 			case 'overlayColor':
 				return $value;
 				break;
@@ -2477,7 +2723,7 @@
 
             //Media
             case 'hasParallax':
-                return $value === true ? 'bg-parallax' : '';
+                return $value === true ? 'bg-fixed' : '';
             case 'isRepeated':
                 return $value === true ? 'bg-repeat' : '';
 
@@ -2615,7 +2861,17 @@
 
 		private function getWidth(string $value):string
 		{
-			$value = (int)str_replace('%', '', $value);
+
+			$value = str_replace('%', '', $value);
+
+			if (str_contains($value, 'px') ||
+				str_contains($value, 'em') ||
+				str_contains($value, 'rem') ||
+				str_contains($value, 'vw') ||
+				str_contains($value, 'vh')) {
+				return '';
+			}
+
 			return sprintf(
 				'width-%d',
 				match (true) {
@@ -2628,8 +2884,11 @@
 				}
 			);
 		}
-		private function getDimRatio(string $value):string
+		private function getDimRatio(string $value, array $attrs):string
 		{
+			if (array_key_exists('overlayColor', $attrs)) {
+				return '';
+			}
 			if (is_numeric($value)) {
 				return sprintf(
 					'op-%d',
@@ -2658,6 +2917,8 @@
 				if (array_key_exists('duotone', $value['color'])) {
 					$preset = explode('|', $value['color']['duotone']);
 					$preset = $preset[array_key_last($preset)];
+					$preset = $this->getColor($preset, false);
+
 					if (str_contains($preset, '-')) {
 						$preset = explode('-', $preset);
 					} else {
@@ -2771,10 +3032,9 @@
         $styles = [];
         foreach ($attrs as $key => $value) {
             $style = $this->getStyle($key, $value, $attrs);
-			if (is_string($style)) {
-				$style = [$style];
-			}
+
             $styles = array_merge($styles, $style);
+			$styles = array_unique($styles);
         }
         return $styles;
     }
@@ -2800,13 +3060,13 @@
             // Background URL (for cover, media blocks)
             case 'url':
                 if (!empty($value) && str_starts_with($value, 'http')) {
-                    return 'background-image: url('.$value.')';
+                    return ['background-image' => 'url('.$value.')'];
                 }
                 break;
 
             // Focal point for background images
             case 'focalPoint':
-				return $this->getFocalPointStyle($value);
+				return $this->getFocalPointStyle($value, $attrs);
 
             // Complex style object
             case 'style':
@@ -2820,16 +3080,26 @@
                 if ($value === 'video' && isset($attrs['backgroundUrl'])) {
                     // Don't set a background image for videos - it will be handled by the video element
                 } elseif (isset($attrs['backgroundUrl'])) {
-                    return 'background-image: url('.$attrs['backgroundUrl'].')';
+                    return ['background-image' => 'url('.$attrs['backgroundUrl'].')'];
                 }
                 break;
 
+			case 'width':
+				if (str_contains($value, 'px') ||
+					str_contains($value, 'em') ||
+					str_contains($value, 'rem') ||
+					str_contains($value, 'vw') ||
+					str_contains($value, 'vh')) {
+					return ['width' => $value];
+				}
+				break;
+
 			case 'backgroundColor':
 			case 'borderColor':
 			case 'textColor':
 				$type = str_replace('Color', '-color', $key);
 				$type = str_replace('text-', '', $type);
-				if (isset($attrs['border']['width']) && $key === 'borderColor') {
+				if ($key === 'borderColor' && isset($attrs['border']['width'])) {
 					break;
 				}
 				return $this->getColorStyle($value, $type);
@@ -2853,13 +3123,13 @@
 			foreach ($values as $v) {
 				switch ($value) {
 					case 'has-small-icon-size':
-						$styles[] = '--w:var(--txt-x-small)';
+						$styles['--w'] = 'var(--txt-x-small)';
 						break;
 					case 'has-large-icon-size':
-						$styles[] = '--w:var(--txt-large)';
+						$styles['--w'] = 'var(--txt-large)';
 						break;
 					case 'has-huge-icon-size':
-						$styles[] = '--w:var(--txt-xx-large)';
+						$styles['--w'] = 'var(--txt-xx-large)';
 						break;
 					default:
 						if (JVB_TESTING) {
@@ -2869,38 +3139,36 @@
 			}
 			return $styles;
 		}
-		private function getFontFamilyStyle(string $value):string
+		private function getFontFamilyStyle(string $value):array
 		{
 			return match($value) {
-				'body'		=> 'font-family: var(--body)',
-				'heading'	=> 'font-family: var(--heading)',
-				default		=> sprintf('font-family: %s', $value)
+				'body'		=> ['font-family' =>  'var(--body)'],
+				'heading'	=> ['font-family' =>  'var(--heading)'],
+				default		=> ['font-family' => $value]
 			};
 		}
-		private function getColorStyle(string $value, ?string $type = 'color'):string
+		private function getColorStyle(string $value, ?string $type = 'color'):array
 		{
 			if (!in_array($type, ['color', 'background','background-color','border-color'])) {
 				$type = null;
 			}
-			return sprintf(
-				'%s%s',
-				$type ? $type.': ' : '',
-				$this->getColor($value)
-			);
+			if (!$type) {
+				return [];
+			}
+			return [
+				$type => $this->getColor($value)
+			];
 		}
-		private function getMinHeightStyle(string $value, array $attrs):string
+		private function getMinHeightStyle(string $value, array $attrs):array
 		{
-			$out = '';
+			$out = [];
 			if (!empty($value)) {
 				if (isset($attrs['minHeightUnit'])) {
-					$out = sprintf(
-						'min-height: %s%s',
-						$value,
-						$attrs['minHeightUnit']
-					);
+					$out['min-height'] = sprintf('%s%s', $value, $attrs['minHeightUnit']);
+
 				} else {
-					$out = sprintf(
-						'min-height: %spx',
+					$out['min-height'] = sprintf(
+						'%spx',
 						$value
 					);
 				}
@@ -2908,18 +3176,20 @@
 			return $out;
 		}
 
-		private function getFocalPointStyle(array $value):string
+		private function getFocalPointStyle(array $value, array $attrs):array
 		{
-			jvbDump($value, 'Focal Point');
-			$x = array_key_exists('x', $value) ? $value['x'] * 100 : 'center';
-			$y = array_key_exists('y', $value) ? $value['y'] * 100 : 'center';
+			$x = array_key_exists('x', $value) ? ($value['x'] * 100).'%' : 'center';
+			$y = array_key_exists('y', $value) ? ($value['y'] * 100).'%' : 'center';
 
 			$y = $x === $y ? '' : ' '.$y;
-			return sprintf(
-				'background-position:%s%s',
+
+			$key = array_key_exists('isObjectPosition', $attrs) ? 'object-position' : 'background-position';
+			return [
+				$key => sprintf(
+				'%s%s',
 				$x,
 				$y
-			);
+			)];
 		}
 
 		private function extractStyles(array $value, array $attrs):array
@@ -2933,10 +3203,10 @@
 
 					case 'color':
 						if (isset($v['background'])) {
-							$styles[] = $this->getColorStyle($v['background'], 'background-color');
+							$styles['background-color'] = $this->getColor($v['background']);
 						}
 						if (isset($v['text'])) {
-							$styles[] = $this->getColorStyle($v['text']);
+							$styles['color'] = $this->getColor($v['text']);
 						}
 						if (isset($v['gradient'])) {
 							jvbDump($v, 'Gradient');
@@ -2962,13 +3232,13 @@
 									);
 								}
 								if (!empty($inner)) {
-									$styles[] = sprintf(
-										'--gap: %s',
+									$styles['--gap'] = sprintf(
+										'%s',
 										implode(' ', $inner)
 									);
 								}
 							} else {
-								$styles[] = '--gap: var(--sp'.$this->getPresetSpacing($v['blockGap']).')';
+								$styles['--gap'] = 'var(--sp'.$this->getPresetSpacing($v['blockGap']).')';
 							}
 						}
 
@@ -2977,7 +3247,7 @@
 						if (isset($v['margin'])) {
 							foreach ($v['margin'] as $direction => $size) {
 								if (!str_contains($size, 'var:preset')) {
-									$styles[] = 'margin-'.$direction.': '.$size;
+									$styles['margin-'.$direction] = $size;
 								}
 							}
 						}
@@ -2985,7 +3255,7 @@
 						if (isset($v['padding'])) {
 							foreach($v['padding'] as $dir => $size) {
 								if (!str_contains($size, 'var:preset')) {
-									$styles[] = 'padding-'.$dir.': '.$size;
+									$styles['padding-'.$dir] = $size;
 								}
 							}
 						}
@@ -2995,8 +3265,8 @@
 						if (array_key_exists('backgroundImage', $v)) {
 							$data = Image::getData($v['backgroundImage']['id']);
 							if (!empty($data) && array_key_exists('tiny', $data)) {
-								$styles[] = sprintf(
-									'background-image: url(%s)',
+								$styles['background-image'] = sprintf(
+									'url(%s)',
 									$data['tiny']
 								);
 							}
@@ -3007,10 +3277,7 @@
 					case 'dimensions':
 						foreach ($v as $sk => $sv) {
 							if ($sk === 'minHeight') {
-								$styles[] = sprintf(
-									'min-height: %s',
-									$sv
-								);
+								$styles['min-height'] = $sv;
 							} else {
 								jvbDump('No config set for dimension '.$sk.': '.print_r($sv, true));
 							}
@@ -3030,7 +3297,10 @@
 						break;
 
 					default:
-						jvbDump('No config set for '.$k.': '.print_r($v, true));
+						if (JVB_TESTING) {
+							jvbDump($v,'No config set for '.$k.': ');
+						}
+
 				}
 			}
 
@@ -3041,21 +3311,37 @@
 				$styles = [];
 
 				if (isset($border['radius'])) {
-					$styles[] = 'border-radius: '.$border['radius'];
+					$styles['border-radius'] = $border['radius'];
 				}
 
-				if (isset($border['width']) && isset($attrs['borderColor'])) {
+				if (isset($border['width']) && (isset($attrs['borderColor']) || isset($border['color']))) {
 					$st = $border['style'] ?? 'solid';
-					$styles[] = sprintf(
-						'border: %s %s %s',
+					$color = $border['color']??$attrs['borderColor'];
+					$styles['border'] = sprintf(
+						'%s %s %s',
 						$border['width'],
 						$st,
-						$this->getColor($attrs['borderColor'])
+						$this->getColor($color)
 					);
-				} elseif (isset($border['width'])) {
-					$styles[] = 'border-width: '.$border['width'];
-				} elseif (isset($border['style'])) {
-					$styles[] = 'border-style: '.$border['style'];
+				} else {
+					if (isset($border['color'])) {
+						$styles['border-color'] = $border['color'];
+					}
+					if (isset($border['width'])) {
+						$styles['border-width'] = $border['width'];
+					}
+					if (isset($border['style'])) {
+						$styles['border-style'] = $border['style'];
+					}
+				}
+				if (JVB_TESTING) {
+					unset($border['radius']);
+					unset($border['width']);
+					unset($border['style']);
+					unset($border['color']);
+					if (!empty($border)) {
+						jvbDump($border,'[getBorderStyle] Leftover styles:');
+					}
 				}
 
 				return $styles;
@@ -3070,9 +3356,9 @@
 					switch ($l) {
 						case 'selfStretch':
 							if ($option === 'fixed' && isset($layout['selfStretchValue'])) {
-								$styles[] = 'width: '.$layout['selfStretchValue'];
+								$styles['width'] = $layout['selfStretchValue'];
 							} elseif ($option === 'fill') {
-								$styles[] = 'flex:1';
+								$styles['flex'] = 1;
 							}
 							break;
 						default:
@@ -3099,30 +3385,41 @@
 			private function getTypographyStyle(array $typography, array $attrs):array
 			{
 				$styles = [];
-
-				if (isset($typography['fontSize'])) {
-					$styles[] = 'font-size: '.$typography['fontSize'];
+				foreach ($typography as $property => $value) {
+					switch ($property) {
+						case 'fontSize':
+							$styles['font-size'] = $value;
+							break;
+						case 'fontWeight':
+							$styles['font-weight'] = $value;
+							break;
+						case 'textDecoration':
+							$styles['text-decoration'] = $value;
+							break;
+						case 'textTransform':
+							$styles['text-transform'] = $value;
+							break;
+						case 'letterSpacing':
+							$styles['letter-spacing'] = $value;
+							break;
+						case 'lineHeight':
+							$styles['line-height'] = $value;
+							break;
+						case 'fontStyle':
+							$styles['font-style'] = $value;
+							break;
+						case 'writingMode':
+							$styles['writing-mode'] = $value;
+							break;
+						case 'textAlign':
+							$styles['text-align'] = $value;
+						default:
+							if (JVB_TESTING) {
+								jvbDump($value,'[getTypographyStyle] No property set for '.$property.': ');
+							}
+					}
 				}
 
-				if (isset($typography['fontWeight'])) {
-					$styles[] = 'font-weight: '.$typography['fontWeight'];
-				}
-
-				if (isset($typography['textDecoration'])) {
-					$styles[] = 'text-decoration: '.$typography['textDecoration'];
-				}
-
-				if (isset($typography['textTransform'])) {
-					$styles[] = 'text-transform: '.$typography['textTransform'];
-				}
-
-				if (isset($typography['letterSpacing'])) {
-					$styles[] = 'letter-spacing: '.$typography['letterSpacing'];
-				}
-
-				if (isset($typography['lineHeight'])) {
-					$styles[] = 'line-height: '.$typography['lineHeight'];
-				}
 				return $styles;
 			}
 			private function extractElementStyles(array $elements, string $uid):void
@@ -3135,18 +3432,33 @@
 						default   => $element,
 					};
 
+					$selectors = explode(',',$selector);
 					foreach ($states as $state => $rules) {
 						$css = [];
-						$fullSelector = str_starts_with($state, ':')
-							? ".{$uid} {$selector}{$state}"
-							: ".{$uid} {$selector}";
 
-						if (isset($rules['color']['text'])) {
-							$css[] = 'color: '.$this->getColor($rules['color']['text']);
+						$fullSelector = array_map(function($sel) use ($uid, $state) {
+							return str_starts_with($state, ':')
+								? ".{$uid} {$sel}{$state}"
+								: ".{$uid} {$sel}";
+						}, $selectors);
+						$fullSelector = implode(',', $fullSelector);
+
+						jvbDump($state, 'state');
+						jvbDump($rules, 'rules');
+
+						if (isset($rules['color']['text']) || isset($rules['text'])) {
+							$css['color'] = $this->getColor($rules['color']['text'] ?? $rules['text']);
 						}
-						if (isset($rules['color']['background'])) {
-							$css[] = 'background-color: '.$this->getColor($rules['color']['background']);
+						if (isset($rules['color']['background']) || isset($rules['background'])) {
+							$css['background-color'] = $this->getColor($rules['color']['background']??$rules['background']);
 						}
+						//clean out possible empty values
+						$css = array_filter($css);
+
+						$css = array_map(function ($property, $value) {
+							return $property.': '.$value;
+						}, array_keys($css), $css);
+
 						if (!empty($css)) {
 							static::$pendingStyles[] = $fullSelector.' { '.implode('; ', $css).' }';
 						}
@@ -3162,31 +3474,32 @@
 		return $out;
 	}
 
-		private function getDimRatioStyle(int $value, array $attrs):string
+		private function getDimRatioStyle(int $value, array $attrs):array
 		{
 			//TODO: This likely isn't working correctly
-			jvbDump($value, 'dimRatio');
-			jvbDump($attrs, 'dimRatio attrs');
-			$s = '';
-			if (!array_key_exists('overlayColor', $attrs)) {
-				$s = 'background-color: rgba(var(--base-rgb), ';
-				if ($value <= 14) {
-					$s .= 'var(--op-1));';
-				} elseif ($value <= 28) {
-					$s .= 'var(--op-2));';
-				} elseif ($value <= 42) {
-					$s .= 'var(--op-3));';
-				} elseif ($value <= 56) {
-					$s .= 'var(--op-45));';
-				} elseif ($value <= 70) {
-					$s .= 'var(--op-4));';
-				} elseif ($value <= 84) {
-					$s .= 'var(--op-5));';
-				} else {
-					$s .= 'var(--op-6));';
-				}
+//			jvbDump($value, 'dimRatio');
+//			jvbDump($attrs, 'dimRatio attrs');
+			$ratio = [];
+
+			$s = array_key_exists('overlayColor', $attrs) ? 'var(--'.$attrs['overlayColor'].')' : 'var(--base)';
+			$s = 'rgba('.$s.', ';
+			if ($value <= 14) {
+				$s .= 'var(--op-1))';
+			} elseif ($value <= 28) {
+				$s .= 'var(--op-2))';
+			} elseif ($value <= 42) {
+				$s .= 'var(--op-3))';
+			} elseif ($value <= 56) {
+				$s .= 'var(--op-45))';
+			} elseif ($value <= 70) {
+				$s .= 'var(--op-4))';
+			} elseif ($value <= 84) {
+				$s .= 'var(--op-5))';
+			} else {
+				$s .= 'var(--op-6))';
 			}
-			return $s;
+
+			return ['background-color' => $s];
 		}
 
 		protected function getDataset(array $attrs):array
@@ -3224,14 +3537,18 @@
 		return array_key_exists($test, $attrs) && $attrs[$test]===true;
 	}
 
-	protected function getColor(string $value):string
+	protected function getColor(string $value, bool $prefix = true):string
 	{
 		$defaults = apply_filters('jvbColours', ['base', 'contrast', 'action', 'secondary']);
 		foreach ($defaults as $default) {
 			if (str_starts_with($value, $default)) {
-				return 'var(--'.$value.')';
+				return $prefix ? 'var(--'.$value.')' : $value;
 			}
 		}
+		//We removed the presets
+		if (str_contains($value, 'var:preset')) {
+			return '';
+		}
 		return $value;
 	}
 
diff --git a/inc/blocks/VideoCoverBlock.php b/inc/blocks/VideoCoverBlock.php
index d6e753e..b60b172 100644
--- a/inc/blocks/VideoCoverBlock.php
+++ b/inc/blocks/VideoCoverBlock.php
@@ -1,6 +1,8 @@
 <?php
 namespace JVBase\blocks;
 
+use JVBase\managers\SEO\render\Thing\CreativeWork\MediaObject\VideoObject;
+
 if (!defined('ABSPATH')) {
 	exit;
 }
@@ -73,42 +75,52 @@
 		// Build video tag
 		$classes = trim("video-cover {$fade_class} {$css_class}");
 
-		$html = '<section class="'.esc_attr($classes).'">
-		<script type="application/ld+json">
-        {
-            "@context": "https://schema.org/",
-            "@type": "VideoObject",
-            "name": "'.$title.'",
-            "thumbnailUrl": "'.$poster_url.'",
-            "contentUrl": "'.$video_sources[0]['url'].'",
-            "description": "'.$description.'",
-            "uploadDate": "'.$date.'"
-        }
-    </script>
-    <div class="wrap abs edges">
-        <div class="video-container">';
-		$html .= '<video';
-		$html .= ' muted loop playsinline autoplay';
+		$video = new VideoObject();
+		$video->setName($title);
+		$video->setThumbnailUrl($poster_url);
+		$video->setContentUrl($video_sources[0]['url']);
+		$video->setDescription($description);
+		$video->setUploadDate($date);
 
-		if ($poster_url) {
-			$html .= ' poster="' . esc_url($poster_url) . '"';
-		}
+		$html = sprintf(
+			'<section class="%s">
+		<script type="application/ld+json">%s</script>
+    <div class="wrap abs edges">
+        <div class="video-container">',
+			esc_attr($classes),
+		json_encode($video->outputSchema())
+	);
+
+		$poster = $poster_url ? sprintf(
+			' poster="%s"',
+			esc_url($poster_url)
+		) : '';
+
+		$html .= sprintf(
+			'<video muted loop playsinline autoplay%s fetch-priority="high">',
+			$poster
+		);
+
 
 		$html .= ' fetch-priority="high">';
 
 		foreach ($video_sources as $source) {
 			if (!empty($source['url']) && !empty($source['mime'])) {
-				$html .= '<source';
-				$html .= ' data-src="' . esc_url($source['url']) . '"';
-				$html .= ' type="' . esc_attr($source['mime']) . '"';
-				$html .= '>';
+				$html .= sprintf(
+					'<source data-src="%s" type="%s">',
+					esc_url($source['url']),
+					esc_attr($source['mime'])
+				);
 			}
 		}
 
 		$html .= '</video>';
 
 		$inner_content = $this->extractInnerContent($content);
-		$html .= '</div></div><div class="inner-wrap">'.$inner_content.'</div></section>';
+		$html .= sprintf(
+			'</div></div><div class="inner-wrap">%s</div></section>',
+			$inner_content
+		);
 
 		return $html;
 	}
diff --git a/inc/helpers/media.php b/inc/helpers/media.php
index 6381b82..9c30bab 100644
--- a/inc/helpers/media.php
+++ b/inc/helpers/media.php
@@ -10,6 +10,7 @@
     <dialog class="gallery" aria-modal="true" aria-label="Image Gallery">
 
 		<div class="wrap col">
+			<p class="hint">Pinch to Zoom</p>
 			<div class="controls row">
 				<button type="button" class="cancel" title="Close Gallery" aria-label="Close Gallery"> <?= jvbIcon('x') ?></button>
 				<button class="nav prev" title="Previous image" aria-label="Previous image">
diff --git a/inc/managers/SEO/render/Thing/Intangible/Quantity/Duration.php b/inc/managers/SEO/render/Thing/Intangible/Quantity/Duration.php
index 47a4faf..bcf88f0 100644
--- a/inc/managers/SEO/render/Thing/Intangible/Quantity/Duration.php
+++ b/inc/managers/SEO/render/Thing/Intangible/Quantity/Duration.php
@@ -10,6 +10,11 @@
 
 class Duration extends Thing
 {
+	public function __construct(string $duration)
+	{
+		$this->duration = date('c', $duration);
+	}
+
 	/**
 	 * @var string Duration (use ISO 8601 duration format).
 	 */
diff --git a/inc/managers/SEO/render/Traits/_Properties/durationTrait.php b/inc/managers/SEO/render/Traits/_Properties/durationTrait.php
index 9165e8d..3e0941b 100644
--- a/inc/managers/SEO/render/Traits/_Properties/durationTrait.php
+++ b/inc/managers/SEO/render/Traits/_Properties/durationTrait.php
@@ -16,8 +16,11 @@
 	{
 		return $this->duration??null;
 	}
-	public function setDuration(Duration $duration):void
+	public function setDuration(Duration|string $duration):void
 	{
+		if (is_string($duration)) {
+			$duration = new Duration($duration);
+		}
 		$this->duration = $duration;
 	}
 }
diff --git a/inc/utility/Image.php b/inc/utility/Image.php
index 0b0afc2..b888008 100644
--- a/inc/utility/Image.php
+++ b/inc/utility/Image.php
@@ -21,6 +21,7 @@
 		$this->imgData = Cache::for('imageData')->connect('post');
 		if (JVB_TESTING) {
 			$this->cache->flush();
+			$this->imgData->flush();
 		}
 	}
 
@@ -95,7 +96,7 @@
 				$postSlug,
 				$postSlug,
 				$imgSlug,
-				$full[0]
+				$full[0]??''
 			);
 
 			// Add gallery attributes to img tag
diff --git a/inc/utility/Video.php b/inc/utility/Video.php
new file mode 100644
index 0000000..f71c050
--- /dev/null
+++ b/inc/utility/Video.php
@@ -0,0 +1,146 @@
+<?php
+namespace JVBase\utility;
+
+use JVBase\managers\Cache;
+use JVBase\managers\SEO\render\Thing\CreativeWork\MediaObject\VideoObject;
+
+if (!defined('ABSPATH')) {
+	exit;
+}
+
+class Video
+{
+	protected ?Cache $cache = null;
+	protected ?Cache $vidData = null;
+
+	public function __construct()
+	{
+		$this->cache = Cache::for('videos')->connect('post');
+		$this->vidData = Cache::for('vidData')->connect('post');
+		if (JVB_TESTING) {
+			$this->cache->flush();
+			$this->vidData->flush();
+		}
+	}
+	public static function get(int $ID, array $args = []):string
+	{
+		return (new self())->formatVideo($ID, $args);
+	}
+	public function formatVideo(int $ID, array $args = []):string
+	{
+		return $this->cache->remember(
+			$this->cache->generateKey(array_merge(['id' => $ID], $args)),
+			function() use ($ID, $args) {
+				$url = wp_get_attachment_url($ID);
+				$meta = wp_get_attachment_metadata($ID);
+				$attachmentPost = get_post($ID);
+
+				jvbDump($meta, 'video meta');
+
+				$title = ($attachmentPost && $attachmentPost->post_title !== '') ? $attachmentPost->post_title : '';
+				$caption = wp_get_attachment_caption($ID);
+
+				$video = new VideoObject();
+				$video->setName($title);
+				$video->setContentUrl($url);
+
+				if ($attachmentPost) {
+					$video->setUploadDate($attachmentPost->post_date);
+				}
+
+				if (isset($meta['height'])) {
+					$video->setHeight($meta['height'].'px');
+				}
+				if (isset($meta['width'])) {
+					$video->setWidth($meta['width'].'px');
+				}
+				if (isset($meta['mime_type'])) {
+					$video->setEncodingFormat($meta['mime_type']);
+				}
+				if (isset($meta['filesize'])) {
+					$video->setContentSize($meta['filesize']);
+				}
+				if (isset($meta['length'])) {
+					$video->setDuration($meta['length']);
+				}
+				if (!empty($caption)) {
+					$video->setDescription($caption);
+				}
+
+				$schema = sprintf(
+					'<script type="application/ld+json">%s</script>',
+					json_encode($video->outputSchema())
+				);
+
+				return sprintf(
+					'%s<video width="%s" height="%s" controls>
+						<source src="%s" type="%s">Your browser does not support the video tag
+					</video>',
+					$schema,
+					$meta['width'],
+					$meta['height'],
+					$url,
+					$meta['mime_type']
+				);
+
+
+
+			}
+		);
+	}
+
+	public function getGallerySizes(int $ID, string $replace):string
+	{
+		if (!wp_get_attachment_image_src($ID)) {
+			return '';
+		}
+		if (!has_image_size($replace)) {
+			$replace = 'large';
+		}
+
+		if ($replace == 'large') {
+			return 'data-small="' .
+				wp_get_attachment_image_src($ID)[0] . '" data-medium="' .
+				wp_get_attachment_image_src($ID, 'large')[0] . '" data-full="' .
+				wp_get_attachment_image_src($ID, 'full')[0] . '"';
+		} elseif ($replace == 'medium') {
+			return 'data-small="'.
+				wp_get_attachment_image_src($ID, 'large')[0].'" data-medium="'.
+				wp_get_attachment_image_src($ID, 'large')[0].'" data-full="'.
+				wp_get_attachment_image_src($ID, 'large')[0].'"';
+		} elseif ($replace == 'thumbnail') {
+			return 'data-small="'.
+				wp_get_attachment_image_src($ID, 'medium')[0].'" data-medium="'.
+				wp_get_attachment_image_src($ID, 'medium')[0].'" data-full="'.
+				wp_get_attachment_image_src($ID, 'medium')[0].'"';
+		}
+		return '';
+	}
+
+	public function getImageData(int $imgID):array
+	{
+		return $this->imgData->remember(
+			$imgID,
+			function() use ($imgID) {
+				if (!wp_get_attachment_image($imgID, 'tiny')) {
+					return [];
+				}
+				return [
+					'tiny' 			=> wp_get_attachment_image_src($imgID, 'tiny')[0],
+					'small' 		=> wp_get_attachment_image_src($imgID, 'medium')[0],
+					'medium' 		=> wp_get_attachment_image_src($imgID, 'large')[0],
+					'large' 		=> wp_get_attachment_image_src($imgID, 'full')[0],
+					'image-alt-text'=> get_post_meta($imgID, '_wp_attachment_image_alt', true),
+					'image-title'	=> get_the_title($imgID),
+					'image-caption' => get_the_excerpt($imgID),
+				];
+			}
+		);
+	}
+
+	public static function getData(int $imgID):array
+	{
+		return (new Video)->getImageData($imgID);
+	}
+
+}
diff --git a/inc/utility/setup.php b/inc/utility/setup.php
index 0ff336b..188786d 100644
--- a/inc/utility/setup.php
+++ b/inc/utility/setup.php
@@ -1,6 +1,7 @@
 <?php
 require(JVB_DIR.'/inc/utility/helpers.php');
 require(JVB_DIR.'/inc/utility/Image.php');
+require(JVB_DIR.'/inc/utility/Video.php');
 
 
 function jvb_filter_content(string $content):string
diff --git a/src/drawer-menu/style.scss b/src/drawer-menu/style.scss
index 52e11af..6c80a9d 100644
--- a/src/drawer-menu/style.scss
+++ b/src/drawer-menu/style.scss
@@ -8,9 +8,9 @@
 	z-index: var(--z-5);
 	transition: var(--trans-size);
 	--dir: column-reverse;
-	background-color: var(--base);
-	border-left: 1px solid var(--base-200);
-	box-shadow:rgba(var(--base-rgb), var(--op-4)) var(--shdw-left);
+	background-color: rgb(var(--base));
+	border-left: 1px solid rgb(var(--base-200));
+	box-shadow:rgba(var(--base), var(--op-4)) var(--shdw-left);
 	height: auto;
 	--w: var(--chip_);
 
@@ -75,7 +75,7 @@
 	}
 
 	.menu-section {
-		border-bottom: 1px solid var(--contrast-200);
+		border-bottom: 1px solid rgb(var(--contrast-200));
 	}
 	.section-title {
 		padding: 0.5rem var(--px);
diff --git a/src/faq/style.scss b/src/faq/style.scss
index 13564fa..797bbcd 100644
--- a/src/faq/style.scss
+++ b/src/faq/style.scss
@@ -1,7 +1,7 @@
 nav#faq {
 	height: max-content;
 	display: block;
-	background-color: var(--base-100);
+	background-color: rgb(var(--base-100));
 	border-radius: var(--radius-outer);
 	padding: 1.5rem;
 	touch-action: auto;
@@ -47,11 +47,11 @@
 		text-transform: none;
 	}
 	:target {
-		background-color: var(--base);
+		background-color: rgb(var(--base));
 		outline: none;
 
 		h2 {
-			background-color: var(--base);
+			background-color: rgb(var(--base));
 			padding: 1rem 1.5rem;
 			border-radius: var(--radius-outer);
 		}
diff --git a/src/feed/style.scss b/src/feed/style.scss
index 3d4e777..38f7b0f 100644
--- a/src/feed/style.scss
+++ b/src/feed/style.scss
@@ -35,7 +35,7 @@
 //	position: sticky;
 //	top: 3rem;
 //	z-index: 15;
-//	background: rgba(var(--base-rgb),var(--op-6));
+//	background: rgba(var(--base),var(--op-6));
 //	padding: .25rem 3rem;
 //	details[open] summary {
 //		background-color: var(--overlay);
@@ -72,7 +72,7 @@
 //
 //	details[open],
 //	summary:hover {
-//		background-color: rgba(var(--base-rgb),var(--op-6));
+//		background-color: rgba(var(--base),var(--op-6));
 //	}
 //
 //	&:has(#favourites) {
@@ -155,7 +155,7 @@
 //	grid-column: 1/-1;
 //	text-align: center;
 //	padding: 2rem;
-//	background: var(--base-100);
+//	background: rgb(var(--base-100));
 //	border-radius: var(--radius);
 //	margin: 0 auto;
 //	max-width: 600px;
@@ -165,8 +165,8 @@
 // */
 //.placeholder {
 //	aspect-ratio: 1;
-//	background: var(--base);
-//	border: 1rem solid var(--base-50);
+//	background: rgb(var(--base));
+//	border: 1rem solid rgb(var(--base-50));
 //	border-radius: 1rem;
 //	display: flex;
 //	justify-content: center;
@@ -174,7 +174,7 @@
 //
 //	.icon {
 //		--w: 50%;
-//		color: var(--base-200);
+//		color: rgb(var(--base-200));
 //		animation: dance 2.5s ease-in-out infinite;
 //
 //	}
@@ -187,7 +187,7 @@
 //	position: relative;
 //	border-radius: 0.5rem;
 //	overflow: hidden;
-//	background: var(--base-50);
+//	background: rgb(var(--base-50));
 //	box-shadow: 0 2px 4px rgba(0,0,0,0.1);
 //	opacity: 0;
 //	transition: opacity var(--trans-base) var(--delay);
@@ -242,7 +242,7 @@
 //			bottom: 0;
 //			left: 0;
 //			right: 0;
-//			background-color: rgba(var(--base-rgb),var(--op-3));
+//			background-color: rgba(var(--base),var(--op-3));
 //			backdrop-filter: blur(5px);
 //			border-radius: var(--radius);
 //			z-index: 1;
@@ -278,8 +278,8 @@
 //	align-items: center;
 //	gap: .5rem;
 //	padding: .75rem 1.5rem;
-//	background: var(--base);
-//	color: var(--contrast);
+//	background: rgb(var(--base));
+//	color: rgb(var(--contrast));
 //	border-radius: 4px;
 //	font-size: var(--txt-medium);
 //	transition: all var(--trans-base);
@@ -290,7 +290,7 @@
 //	}
 //	&:hover {
 //		background: var(--pink-50);
-//		border-color: var(--contrast);
+//		border-color: rgb(var(--contrast));
 //		color: var(--white);
 //	}
 //}
@@ -302,9 +302,9 @@
 //	top: .5rem;
 //	right: .5rem;
 //	z-index: 10;
-//	background: rgba(var(--base-rgb),var(--op-4));
+//	background: rgba(var(--base),var(--op-4));
 //	border-radius: 50%;
-//	box-shadow: rgba(var(--base-rgb),var(--op-45)) var(--shdw-subtle);
+//	box-shadow: rgba(var(--base),var(--op-45)) var(--shdw-subtle);
 //	border: none;
 //	width: 2rem;
 //	height: 2rem;
@@ -317,7 +317,7 @@
 //	&:hover {
 //		transform: scale(1.1);
 //		color: var(--pink-0);
-//		background: var(--base);
+//		background: rgb(var(--base));
 //		box-shadow: 0 4px 8px rgba(0,0,0,0.15);
 //	}
 //
@@ -383,7 +383,7 @@
 ///** Item Information **/
 //.item-info {
 //	padding: .25rem;
-//	border-left: 1px solid var(--base-200);
+//	border-left: 1px solid rgb(var(--base-200));
 //	>div + div {
 //		margin-top: .5em;
 //		position: relative;
@@ -395,7 +395,7 @@
 //			top: -.3em;
 //			left: -.25rem;
 //			width: 66.6%;
-//			border-bottom: 1px solid var(--base-200);
+//			border-bottom: 1px solid rgb(var(--base-200));
 //		}
 //	}
 //	h3 {
@@ -443,8 +443,8 @@
 //		&:hover,
 //		&:focus {
 //			background-color: transparent;
-//			border-color: var(--contrast);
-//			color: var(--contrast);
+//			border-color: rgb(var(--contrast));
+//			color: rgb(var(--contrast));
 //		}
 //	}
 //}
@@ -461,7 +461,7 @@
 //	left: 0;
 //	right: 0;
 //	bottom: 0;
-//	background-color: rgba(var(--base-rgb),var(--op-4));
+//	background-color: rgba(var(--base),var(--op-4));
 //	display: flex;
 //	align-items: center;
 //	justify-content: center;
@@ -487,7 +487,7 @@
 //	}
 //
 //	.wrapper {
-//		background-color: rgba(var(--base-rgb),var(--op-6));
+//		background-color: rgba(var(--base),var(--op-6));
 //		padding: 2rem;
 //		border-radius: var(--radius);
 //		text-align: center;
@@ -536,12 +536,12 @@
 //
 //			h3 {
 //				margin: 1.5rem 0 .25rem!important;
-//				color: var(--contrast-200);
+//				color: rgb(var(--contrast-200));
 //			}
 //			.message {
 //				margin: 0;
 //				max-width: 275px;
-//				color: var(--contrast-100);
+//				color: rgb(var(--contrast-100));
 //				font-size: var(--txt-x-small);
 //				animation: flicker 2s infinite;
 //			}
@@ -624,7 +624,7 @@
 //.feed-block .item {
 //	summary {
 //		a {
-//			background-color: var(--action-0);
+//			background-color: rgb(var(--action-0));
 //			display: flex;
 //			gap: .25rem;
 //			flex-wrap: nowrap;
@@ -703,8 +703,8 @@
 /** PLACEHOLDERS **/
 .placeholder {
 	aspect-ratio: 1;
-	background: var(--base);
-	border: 1rem solid var(--base-50);
+	background: rgb(var(--base));
+	border: 1rem solid rgb(var(--base-50));
 	border-radius: 1rem;
 	display: flex;
 	justify-content: center;
@@ -712,7 +712,7 @@
 
 	i.icon {
 		--w: 50%;
-		color: var(--base-200);
+		color: rgb(var(--base-200));
 		animation: dance 2.5s ease-in-out infinite;
 	}
 }
@@ -726,7 +726,7 @@
 	position: relative;
 	border-radius: 0.5rem;
 	overflow: hidden;
-	background: var(--base-50);
+	background: rgb(var(--base-50));
 	box-shadow: 0 2px 4px rgba(0,0,0,0.1);
 	height: fit-content;
 	padding: 0;
@@ -740,10 +740,10 @@
 			top: -3rem;
 			left:0;
 			width: 100%;
-			background-color: rgba(var(--base-rgb),var(--op-2));
+			background-color: rgba(var(--base),var(--op-2));
 			backdrop-filter: blur(5px);
 			&:hover {
-				background-color: rgba(var(--action-rgb),var(--op-45));
+				background-color: rgba(var(--action-0),var(--op-45));
 			}
 		}
 		&[open] {
@@ -773,7 +773,7 @@
 			span {
 				width: 50%;
 				position: absolute;
-				background-color: var(--action-0);
+				background-color: rgb(var(--action-0));
 				color: var(--action-contrast);
 				padding: .25rem .5rem;
 				&:first-of-type {
@@ -799,7 +799,7 @@
 			object-fit: cover;
 			height: 100%;
 			&:first-of-type {
-				border-right: 1px solid var(--action-0);
+				border-right: 1px solid rgb(var(--action-0));
 			}
 		}
 	}
@@ -841,7 +841,7 @@
 
 .items-wrap [type=radio] + label:hover,
 .items-wrap [type=checkbox] + label:hover {
-	color: var(--action-0);
+	color: rgb(var(--action-0));
 }
 
 .items-wrap [type=radio] + label::before,
@@ -870,20 +870,20 @@
 	transform: translateY(-50%);
 	width: 1rem;
 	height: 1rem;
-	border: 2px solid var(--contrast-200);
-	background-color: var(--base);
+	border: 2px solid rgb(var(--contrast-200));
+	background-color: rgb(var(--base));
 	border-radius: var(--radius);
 }
 
 .items-wrap [type=radio]:hover + label::before,
 .items-wrap [type=checkbox]:hover + label::before {
-	border-color: var(--action-200);
+	border-color: rgb(var(--action-200));
 }
 
 .items-wrap [type=radio]:checked + label::before,
 .items-wrap [type=checkbox]:checked + label::before{
-	background-color: var(--action-0);
-	border-color: var(--action-100);
+	background-color: rgb(var(--action-0));
+	border-color: rgb(var(--action-100));
 }
 
 .items-wrap [type=radio]:checked + label::before {
@@ -903,19 +903,19 @@
 
 .items-wrap :disabled + label {
 	cursor: not-allowed;
-	background-color: var(--base-50);
-	color: var(--base-200);
-	border-color: var(--base-200);
+	background-color: rgb(var(--base-50));
+	color: rgb(var(--base-200));
+	border-color: rgb(var(--base-200));
 }
 
 .items-wrap :disabled + label:hover {
-	background-color: var(--base-50);
-	color: var(--base-200);
-	border-color: var(--base-200);
+	background-color: rgb(var(--base-50));
+	color: rgb(var(--base-200));
+	border-color: rgb(var(--base-200));
 }
 
 .items-wrap :disabled + label::before {
-	border-color: var(--base-200);
+	border-color: rgb(var(--base-200));
 }
 
 #jvb-selector .items-wrap [type=radio] + label,
@@ -930,7 +930,7 @@
 	grid-column: full;
 	padding: 0!important;
 	margin: 0;
-	background-color: var(--base-50);
+	background-color: rgb(var(--base-50));
 	z-index: 0;
 	display: flex;
 	justify-content: flex-end;
diff --git a/src/forms/style.scss b/src/forms/style.scss
index d540000..56c945a 100644
--- a/src/forms/style.scss
+++ b/src/forms/style.scss
@@ -23,8 +23,8 @@
 //	margin: 4rem 0 0 0!important;
 //	height: var(--btn);
 //	padding: 0;
-//	background-color: var(--base);
-//	box-shadow: rgba(var(--base-rgb),var(--op-45)) var(--shdw);
+//	background-color: rgb(var(--base));
+//	box-shadow: rgba(var(--base),var(--op-45)) var(--shdw);
 //}
 //main>* {
 //	max-width: min(768px, 90vw)!important;
@@ -81,7 +81,7 @@
 //	height: var(--btn);
 //	min-width: var(--btn);
 //	padding: 0 .75rem;
-//	color: var(--contrast)!important;
+//	color: rgb(var(--contrast))!important;
 //}
 //.dashboard-nav a .icon {
 //	margin: 0;
@@ -91,12 +91,12 @@
 //}
 //.dashboard-nav .current a:hover,
 //.dashboard-nav a:hover {
-//	background-color: var(--action-0)!important;
+//	background-color: rgb(var(--action-0))!important;
 //	color: var(--action-contrast)!important;
 //}
 //.dashboard-nav .current a {
-//	background-color: var(--base-100)!important;
-//	color: var(--contrast)!important;
+//	background-color: rgb(var(--base-100))!important;
+//	color: rgb(var(--contrast))!important;
 //}
 //.dashboard-nav .current a span {
 //	display: block;
@@ -127,7 +127,7 @@
 //	left: 0;
 //	right: 0;
 //	bottom: 0;
-//	background-color: rgba(var(--base-rgb),var(--op-4));
+//	background-color: rgba(var(--base),var(--op-4));
 //	display: flex;
 //	align-items: center;
 //	justify-content: center;
@@ -143,7 +143,7 @@
 //}
 //
 //.loading-overlay .wrapper {
-//	background-color: var(--base);
+//	background-color: rgb(var(--base));
 //	padding: 2rem;
 //	border-radius: 8px;
 //	text-align: center;
@@ -154,8 +154,8 @@
 //.upload-spinner {
 //	width: 50px;
 //	height: 50px;
-//	border: 5px solid var(--base-200);
-//	border-top: 5px solid var(--action-0);
+//	border: 5px solid rgb(var(--base-200));
+//	border-top: 5px solid rgb(var(--action-0));
 //	border-radius: 50%;
 //	margin: 0 auto 1rem;
 //	animation: spin 1s linear infinite;
@@ -163,12 +163,12 @@
 //
 //.upload-status h3 {
 //	margin: 0 0 .5rem;
-//	color: var(--contrast);
+//	color: rgb(var(--contrast));
 //}
 //
 //.upload-message {
 //	margin: 0;
-//	color: var(--contrast-100);
+//	color: rgb(var(--contrast-100));
 //	font-size: var(--txt-x-small);
 //}
 //
@@ -205,8 +205,8 @@
 //	bottom: 3rem;
 //	left: 0;
 //	right: 0;
-//	background-color: var(--base-100);
-//	box-shadow: rgba(var(--base-rgb),var(--op-45)) var(--shdw);
+//	background-color: rgb(var(--base-100));
+//	box-shadow: rgba(var(--base),var(--op-45)) var(--shdw);
 //	z-index: 10;
 //}
 //.form-sections ul {
@@ -220,12 +220,12 @@
 //.form-sections a {
 //	padding: .25rem;
 //	width: 100%;
-//	color: var(--contrast);
+//	color: rgb(var(--contrast));
 //}
 //.replace:not(:has(.form-section.active)) .form-sections li:first-of-type a,
 //.current a {
-//	background-color: var(--base-200);
-//	color: var(--contrast);
+//	background-color: rgb(var(--base-200));
+//	color: rgb(var(--contrast));
 //}
 //.form-sections .icon {
 //	margin: 0;
@@ -247,8 +247,8 @@
 //	padding: 0;
 //	width: 3rem;
 //	height: 3rem;
-//	color: var(--contrast-200);
-//	background-color: var(--base-200);
+//	color: rgb(var(--contrast-200));
+//	background-color: rgb(var(--base-200));
 //	justify-content: center;
 //	border: 3px solid transparent;
 //}
@@ -257,7 +257,7 @@
 //	z-index: -1;
 //	top: calc(50% - (1.875rem / 2));
 //	font-size: var(--txt-x-small);
-//	background-color: var(--action-0);
+//	background-color: rgb(var(--action-0));
 //	color: var(--action-contrast);
 //	padding: .25rem .5rem;
 //	border-radius: 4px;
@@ -292,7 +292,7 @@
 //	}
 //	.save-popup:before{
 //		right: -.25rem;
-//		border-left: .5rem solid var(--action-0);
+//		border-left: .5rem solid rgb(var(--action-0));
 //	}
 //	.save-popup.show {
 //		right: calc(100% + .5rem);
@@ -308,7 +308,7 @@
 //	}
 //	.save-popup:before{
 //		left: -.25rem;
-//		border-right: .5rem solid var(--action-0);
+//		border-right: .5rem solid rgb(var(--action-0));
 //	}
 //	.save-popup.show {
 //		left: calc(100% + .5rem);
@@ -317,11 +317,11 @@
 //
 //.autosaving span.save,
 //.autosaving button[type=submit] {
-//	border-color: var(--base-200);
-//	border-top-color: var(--action-0);
-//	border-bottom-color: var(--action-50);
+//	border-color: rgb(var(--base-200));
+//	border-top-color: rgb(var(--action-0));
+//	border-bottom-color: rgb(var(--action-50));
 //	border-radius: 50%;
-//	color: var(--contrast-200);
+//	color: rgb(var(--contrast-200));
 //	transition: color .25s var(--trans-t) var(--trans-fn);
 //	transition-property: color, background-color, border;
 //	animation: spin 1s linear infinite;
@@ -355,11 +355,11 @@
 //	bottom: 5rem;
 //	right: 1.5rem;
 //	text-transform: uppercase;
-//	color: var(--action-0);
-//	background-color: var(--base);
+//	color: rgb(var(--action-0));
+//	background-color: rgb(var(--base));
 //	border-radius: 4px;
 //	padding: .25rem .5rem;
-//	box-shadow: rgba(var(--base-rgb),var(--op-45)) var(--shdw-subtle);
+//	box-shadow: rgba(var(--base),var(--op-45)) var(--shdw-subtle);
 //}
 //.field {
 //	margin: 3rem .5rem;
@@ -391,8 +391,8 @@
 //
 //.add-item-btn {
 //	padding: .5em;
-//	background: var(--base-100);
-//	border: 1px solid var(--contrast-200);
+//	background: rgb(var(--base-100));
+//	border: 1px solid rgb(var(--contrast-200));
 //	border-radius: .25rem;
 //	cursor: pointer;
 //	font-size: .875rem;
@@ -402,7 +402,7 @@
 //}
 //
 //.add-item-btn:hover {
-//	background: var(--base-200);
+//	background: rgb(var(--base-200));
 //}
 //summary .type-label {
 //	display: flex;
@@ -418,12 +418,12 @@
 //.tabs {
 //	display: flex;
 //	margin-bottom: 1.5rem;
-//	border-bottom: 2px solid var(--base-200);
+//	border-bottom: 2px solid rgb(var(--base-200));
 //	flex-wrap: wrap;
 //}
 //.tabs.parent {
 //	max-width: 100vw;
-//	background-color: var(--base);
+//	background-color: rgb(var(--base));
 //	padding: .5rem;
 //	width: 100vw;
 //	position: relative;
@@ -438,8 +438,8 @@
 //.tab-content button[type=submit] {
 //	display: inline-flex;
 //	width: 48%;
-//	background-color: var(--action-200);
-//	color: var(--contrast-200);
+//	background-color: rgb(var(--action-200));
+//	color: rgb(var(--contrast-200));
 //}
 //
 //.tab-navigation.next {
@@ -471,7 +471,7 @@
 //}
 //.tabs > button:hover,
 //.tabs > button:focus {
-//	background-color: var(--base-200);
+//	background-color: rgb(var(--base-200));
 //}
 //.tabs > button::after {
 //	content: '';
@@ -480,7 +480,7 @@
 //	left: 0;
 //	width: 0;
 //	height: 3px;
-//	background-color: var(--action-50);
+//	background-color: rgb(var(--action-50));
 //	transition: width .3s;
 //}
 //.tabs > button.active::after {
@@ -489,15 +489,15 @@
 //
 //.tabs > button.add-item-btn {
 //	margin-left: auto;
-//	background-color: var(--action-50);
+//	background-color: rgb(var(--action-50));
 //	border-radius: 4px;
 //	padding: .5em;
 //	font-weight: normal;
-//	border: 1px solid var(--action-50);
+//	border: 1px solid rgb(var(--action-50));
 //}
 //.tabs > button.add-item-btn:focus,
 //.tabs > button.add-item-btn:hover {
-//	background-color: var(--base);
+//	background-color: rgb(var(--base));
 //}
 //
 //.type-filter:not(.active) span:not(.count){
@@ -516,7 +516,7 @@
 //}
 //.item.news summary .image {
 //	width: 5rem;
-//	background-color: var(--base-200);
+//	background-color: rgb(var(--base-200));
 //	border-radius: 4px;
 //	aspect-ratio: 1;
 //}
@@ -567,7 +567,7 @@
 //details .no-items {
 //	text-align: center;
 //	font-style: italic;
-//	background-color: var(--base-50);
+//	background-color: rgb(var(--base-50));
 //	padding: var(--p-outer);
 //	border-radius: var(--radius);
 //}
@@ -639,7 +639,7 @@
 //	width: fit-content;
 //	height: fit-content;
 //	cursor: pointer;
-//	border: 1px solid var(--base-200);
+//	border: 1px solid rgb(var(--base-200));
 //	border-radius: 4px;
 //	font-size: .875rem;
 //	transition: border-color var(--trans-base);
@@ -651,8 +651,8 @@
 //details.type-filters label:hover,
 //details.type-filters input:checked + label {
 //	background-color: var(--light-0);
-//	border-color: var(--action-0);
-//	color: var(--action-0);
+//	border-color: rgb(var(--action-0));
+//	color: rgb(var(--action-0));
 //}
 //details.type-filters .order-direction {
 //	justify-content: flex-end;
@@ -688,7 +688,7 @@
 //.item-grid.empty div {
 //	text-align: center;
 //	border-radius: var(--radius);
-//	background-color: var(--base-100);
+//	background-color: rgb(var(--base-100));
 //}
 //.item-grid.empty h3 .icon {
 //	display: inline-flex;
@@ -726,16 +726,16 @@
 //	top: .125rem;
 //	padding: 0!important;
 //	border-radius: var(--radius);
-//	background-color: rgba(var(--base-rgb),var(--op-3));
-//	color: var(--base-200);
+//	background-color: rgba(var(--base),var(--op-3));
+//	color: rgb(var(--base-200));
 //}
 //.item-grid:not(.list-view) button.favourite:hover,
 //.item-grid:not(.list-view) .item-select label:hover {
-//	background-color: rgba(var(--base-rgb),var(--op-6));
-//	color: var(--contrast);
+//	background-color: rgba(var(--base),var(--op-6));
+//	color: rgb(var(--contrast));
 //}
 //.item-grid:not(.list-view) .item-select label::before {
-//	border-color: var(--base-200);
+//	border-color: rgb(var(--base-200));
 //	position: relative;
 //	top: 0;
 //	left: 0;
@@ -746,7 +746,7 @@
 //	left: calc(50% - 4px)!important;
 //}
 //.item-grid:not(.list-view) .item-select label:hover::before {
-//	border-color: var(--contrast);
+//	border-color: rgb(var(--contrast));
 //}
 //.item-grid:not(.list-view) .item-select label {
 //	left: .1255rem;
@@ -764,7 +764,7 @@
 ///** List View **/
 //.replace:not(:has(.list-view)) button[data-view=grid],
 //.replace:has(.list-view) button[data-view=list] {
-//	background-color: var(--base);
+//	background-color: rgb(var(--base));
 //}
 //.item-grid.list-view .item {
 //	display: flex;
@@ -775,7 +775,7 @@
 //	gap: .5rem;
 //}
 //.item-grid.list-view .item:nth-of-type(even){
-//	background-color: var(--base-100);
+//	background-color: rgb(var(--base-100));
 //}
 //
 //.item-grid.list-view .item-select label{
@@ -794,11 +794,11 @@
 //	transform: none;
 //}
 //.item-grid.list-view .item-select label:hover {
-//	background-color: var(--base);
+//	background-color: rgb(var(--base));
 //}
 //
 //.item-grid.list-view .item-select label:hover::before {
-//	border-color: var(--action-0);
+//	border-color: rgb(var(--action-0));
 //}
 //.item-grid.list-view img {
 //	width: 200px;
@@ -845,11 +845,11 @@
 //Limit reached
 // */
 //.reached .current {
-//	color: var(--action-50);
+//	color: rgb(var(--action-50));
 //}
 //.reached textarea,
 //.reached input {
-//	border: 2px solid var(--action-50);
+//	border: 2px solid rgb(var(--action-50));
 //}
 ///**
 //Groups
@@ -869,19 +869,19 @@
 //	top: 3rem;
 //	left: 100%;
 //	border: 1px solid transparent;
-//	background-color: var(--action-50);
-//	box-shadow:rgba(var(--base-rgb),var(--op-45)) var(--shdw);
+//	background-color: rgb(var(--action-50));
+//	box-shadow:rgba(var(--base),var(--op-45)) var(--shdw);
 //	z-index: 5;
 //}
 //.selection-container #save-changes:hover {
-//	background-color: var(--base);
-//	border: 1px solid var(--action-50);
-//	color: 1px solid var(--action-50);
+//	background-color: rgb(var(--base));
+//	border: 1px solid rgb(var(--action-50));
+//	color: 1px solid rgb(var(--action-50));
 //}
 //
 //.group {
 //	padding: 1rem .66rem;
-//	background-color: var(--base-50);
+//	background-color: rgb(var(--base-50));
 //	border-radius: var(--radius-outer);
 //}
 //.group.empty {
@@ -890,7 +890,7 @@
 //	flex-direction: column;
 //	align-items: center;
 //	justify-content: center;
-//	border: 4px dashed var(--base-200);
+//	border: 4px dashed rgb(var(--base-200));
 //}
 //.group.empty .items {
 //	padding: 0;
@@ -909,7 +909,7 @@
 //	margin-top: 1rem;
 //	padding: 1rem;
 //	border-radius: var(--radius);
-//	background-color: var(--base);
+//	background-color: rgb(var(--base));
 //}
 //.group .item-actions {
 //	display: flex;
@@ -926,13 +926,13 @@
 //	margin-bottom: 0;
 //}
 //.group .item-actions :checked + label {
-//	background-color: var(--action-50);
-//	color: var(--contrast);
+//	background-color: rgb(var(--action-50));
+//	color: rgb(var(--contrast));
 //}
 //.group .item-actions :checked + label:hover {
-//	border: 1px solid var(--action-50);
+//	border: 1px solid rgb(var(--action-50));
 //	background-color: transparent;
-//	color: var(--action-50);
+//	color: rgb(var(--action-50));
 //}
 //.group .item-actions label::before {
 //	display: none!important;
@@ -970,7 +970,7 @@
 //}
 //
 //.group.drop {
-//	border: 2px dashed var(--action-0);
+//	border: 2px dashed rgb(var(--action-0));
 //	background: var(--action-rgb-subtle);
 //}
 //
@@ -988,7 +988,7 @@
 //
 //.group.drop {
 //	background: var(--action-rgb-subtle);
-//	border: 2px dashed var(--action-0);
+//	border: 2px dashed rgb(var(--action-0));
 //}
 //.gallery .group-item,
 //.gallery .preview-item {
@@ -1019,12 +1019,12 @@
 //	display: grid;
 //	grid-template-columns: repeat(3, 1fr);
 //	padding: .5rem;
-//	background-color: var(--base-100);
+//	background-color: rgb(var(--base-100));
 //	border-radius: var(--radius-outer);
 //}
 //.gallery-preview .preview-item {
 //	padding: .5rem;
-//	background-color: var(--base);
+//	background-color: rgb(var(--base));
 //	border-radius: var(--radius);
 //}
 //
@@ -1072,14 +1072,14 @@
 //	text-align: right;
 //}
 //table tr:nth-of-type(even){
-//	background-color: var(--base-200);
+//	background-color: rgb(var(--base-200));
 //}
 //thead th {
 //	width: 50%;
 //}
 //thead tr,
 //tfoot tr {
-//	background-color: var(--base);
+//	background-color: rgb(var(--base));
 //	text-transform: uppercase;
 //	padding: .5rem 0;
 //	line-height: 2;
@@ -1104,7 +1104,7 @@
 //
 ///** Favourites Lists **/
 //.list-card {
-//	background-color: var(--base-50);
+//	background-color: rgb(var(--base-50));
 //	padding: 1rem;
 //	border-radius: var(--radius);
 //}
@@ -1143,7 +1143,7 @@
 ///** Repeater **/
 //.add-repeater-row {
 //	margin-left: auto;
-//	border: 1px solid var(--contrast-200);
+//	border: 1px solid rgb(var(--contrast-200));
 //}
 //
 ///** Image **/
@@ -1166,7 +1166,7 @@
 //}
 //
 //.file-upload-wrapper {
-//	border: 2px dashed var(--action-0);
+//	border: 2px dashed rgb(var(--action-0));
 //	border-radius: 4px;
 //	padding: 2rem;
 //	text-align: center;
@@ -1183,7 +1183,7 @@
 //.file-upload-wrapper:hover,
 //.dragover {
 //	background: var(--action-rgb-subtle-hover);
-//	border-color: var(--action-0)!important;
+//	border-color: rgb(var(--action-0))!important;
 //}
 //
 //.file-upload-wrapper input[type="file"] {
@@ -1197,19 +1197,19 @@
 //}
 //
 //.file-upload-text {
-//	color: var(--contrast);
+//	color: rgb(var(--contrast));
 //	margin: 0;
 //	font-family: var(--body);
 //}
 //
 //.file-upload-text strong {
-//	color: var(--action-0);
+//	color: rgb(var(--action-0));
 //	text-decoration: underline;
 //}
 //
 ///* Error state */
 //.file-error {
-//	color: var(--action-0);
+//	color: rgb(var(--action-0));
 //	margin-top: .5rem;
 //	font-size: .9em;
 //}
@@ -1258,7 +1258,7 @@
 //.item-grid.selecting {
 //	--padding: .5rem;
 //	transition: none;
-//	background-color: var(--base);
+//	background-color: rgb(var(--base));
 //}
 //.item {
 //	--padding: 0;
@@ -1273,7 +1273,7 @@
 //.selecting .item:has(.select-checkbox:checked) {
 //	--padding: .5rem;
 //	opacity: 1;
-//	background-color: var(--action-0);
+//	background-color: rgb(var(--action-0));
 //	transition: none;
 //}
 //
@@ -1287,8 +1287,8 @@
 //}
 //.preview-item .remove-file {
 //	width: 100%;
-//	background-color: var(--base);
-//	color: var(--contrast);
+//	background-color: rgb(var(--base));
+//	color: rgb(var(--contrast));
 //}
 //.preview-item .field:first-of-type {
 //	margin-top: 0!important;
@@ -1296,7 +1296,7 @@
 //.preview-item + .preview-item {
 //	margin-top: 2rem;
 //	padding-top: 2rem;
-//	border-top: 2px solid var(--contrast-200);
+//	border-top: 2px solid rgb(var(--contrast-200));
 //}
 //
 //.item-grid.preview:empty + .hint {
@@ -1376,7 +1376,7 @@
 //	display: grid;
 //	grid-template-columns: repeat(5, 1fr);
 //	gap: .5rem;
-//	background-color: var(--base);
+//	background-color: rgb(var(--base));
 //	padding: .5rem;
 //	border-radius: var(--radius-outer);
 //}
@@ -1413,7 +1413,7 @@
 //}
 //.pagination-info {
 //	position: sticky;
-//	background-color: rgba(var(--base-rgb),var(--op-6));
+//	background-color: rgba(var(--base),var(--op-6));
 //	top: 0;
 //}
 //.pagination-info:empty {
@@ -1430,10 +1430,10 @@
 //	flex-wrap: wrap;
 //	padding: .25rem;
 //	gap: 1rem;
-//	background-color: var(--base);
+//	background-color: rgb(var(--base));
 //	border-top-left-radius: var(--radius);
 //	border-top-right-radius: var(--radius);
-//	border-bottom: 4px solid var(--base-50);
+//	border-bottom: 4px solid rgb(var(--base-50));
 //}
 //.ql-toolbar .ql-formats {
 //	display: flex;
@@ -1441,7 +1441,7 @@
 //}
 //.editor-container .ql-container {
 //	--padding: 1rem;
-//	background-color: var(--base);
+//	background-color: rgb(var(--base));
 //	border-bottom-left-radius: var(--radius);
 //	border-bottom-right-radius: var(--radius);
 //	height: fit-content;
@@ -1470,10 +1470,10 @@
 //.ql-tooltip {
 //	position: absolute;
 //	transform: translateY(10px);
-//	background-color: var(--base-100);
-//	border: 1px solid var(--base);
-//	box-shadow: 0px 0px 5px rgba(var(--base-rgb),var(--op-6));
-//	color: var(--contrast);
+//	background-color: rgb(var(--base-100));
+//	border: 1px solid rgb(var(--base));
+//	box-shadow: 0px 0px 5px rgba(var(--base),var(--op-6));
+//	color: rgb(var(--contrast));
 //	padding: 5px 12px;
 //	white-space: nowrap;
 //}
@@ -1485,7 +1485,7 @@
 ///** Content Grid **/
 //.all-filters {
 //	position: relative;
-//	background-color: var(--base);
+//	background-color: rgb(var(--base));
 //	border-radius: var(--radius-outer);
 //	padding: .5rem;
 //	display: flex;
@@ -1522,9 +1522,9 @@
 //	padding: .25rem .5rem!important;
 //}
 //.controls .radio-options input:not(.ch):checked+label {
-//	background-color: var(--base-100);
-//	border-color: var(--contrast-200);
-//	color: var(--contrast)!important;
+//	background-color: rgb(var(--base-100));
+//	border-color: rgb(var(--contrast-200));
+//	color: rgb(var(--contrast))!important;
 //	gap: .5rem;
 //}
 //
@@ -1593,15 +1593,15 @@
 //	width: 2em;
 //	height: 2em;
 //	border-radius: var(--radius);
-//	background-color: rgba(var(--base-rgb),var(--op-3));
+//	background-color: rgba(var(--base),var(--op-3));
 //	display: flex;
 //	justify-content: center;
 //	align-items: center;
 //}
 //.item-grid .item-actions button:focus,
 //.item-grid .item-actions button:hover {
-//	background-color: rgba(var(--base-rgb),var(--op-6));
-//	color: var(--action-0);
+//	background-color: rgba(var(--base),var(--op-6));
+//	color: rgb(var(--action-0));
 //}
 //
 //
@@ -1637,20 +1637,20 @@
 //	position: relative;
 //	text-align: center;
 //	margin: 1rem 0;
-//	border-bottom: 1px solid var(--base-200);
+//	border-bottom: 1px solid rgb(var(--base-200));
 //}
 //
 //.term-divider span {
-//	background: var(--base);
+//	background: rgb(var(--base));
 //	padding: 0 1rem;
-//	color: var(--contrast);
+//	color: rgb(var(--contrast));
 //	font-size: .9rem;
 //	position: relative;
 //	top: .5em;
 //}
 //
 //.common-term {
-//	background: var(--base-50);
+//	background: rgb(var(--base-50));
 //	border-radius: var(--radius);
 //}
 //
@@ -1660,7 +1660,7 @@
 //	justify-content: center;
 //	gap: .5rem;
 //	padding: 1rem;
-//	color: var(--contrast-100);
+//	color: rgb(var(--contrast-100));
 //	font-size: .9rem;
 //}
 //
@@ -1672,8 +1672,8 @@
 //	text-align: center;
 //	padding: .5rem;
 //	font-size: .9rem;
-//	color: var(--contrast-100);
-//	border-top: 1px solid var(--base-100);
+//	color: rgb(var(--contrast-100));
+//	border-top: 1px solid rgb(var(--base-100));
 //}
 //
 //@keyframes spin {
@@ -1685,7 +1685,7 @@
 //.term-breadcrumb {
 //	margin-bottom: 1rem;
 //	padding: .5rem;
-//	background: var(--base-50);
+//	background: rgb(var(--base-50));
 //	border-radius: 4px;
 //}
 //
@@ -1695,7 +1695,7 @@
 //	gap: .5rem;
 //	border: none;
 //	background: none;
-//	color: var(--contrast);
+//	color: rgb(var(--contrast));
 //	cursor: pointer;
 //	padding: .5rem;
 //	border-radius: 4px;
@@ -1703,7 +1703,7 @@
 //}
 //
 //.back-to-parent:hover {
-//	background: var(--base-100);
+//	background: rgb(var(--base-100));
 //}
 //
 //.term-row {
@@ -1719,7 +1719,7 @@
 //	background: none;
 //	padding: .25rem;
 //	cursor: pointer;
-//	color: var(--contrast);
+//	color: rgb(var(--contrast));
 //	display: flex;
 //	align-items: center;
 //	justify-content: center;
@@ -1728,7 +1728,7 @@
 //}
 //
 //.toggle-children:hover {
-//	background: var(--base-50);
+//	background: rgb(var(--base-50));
 //}
 //
 //.loading-indicator {
@@ -1742,8 +1742,8 @@
 //.loading-indicator .loading {
 //	width: 16px;
 //	height: 16px;
-//	border: 2px solid var(--base-100);
-//	border-top-color: var(--contrast);
+//	border: 2px solid rgb(var(--base-100));
+//	border-top-color: rgb(var(--contrast));
 //	border-radius: 50%;
 //	animation: spin 1s linear infinite;
 //}
@@ -1758,7 +1758,7 @@
 //	gap: .5rem;
 //	margin-bottom: 1rem;
 //	padding: .5rem;
-//	background: var(--base-50);
+//	background: rgb(var(--base-50));
 //	border-radius: 4px;
 //}
 //
@@ -1775,16 +1775,16 @@
 //	padding: .25rem .5rem;
 //	border-radius: 4px;
 //	cursor: pointer;
-//	color: var(--contrast);
+//	color: rgb(var(--contrast));
 //	font-size: var(--txt-x-small);
 //}
 //
 //.term-breadcrumb button:hover {
-//	background: var(--base-100);
+//	background: rgb(var(--base-100));
 //}
 //
 //.path-separator {
-//	color: var(--contrast-50);
+//	color: rgb(var(--contrast-50));
 //}
 //
 //.path-level {
@@ -1794,7 +1794,7 @@
 //.create-new-term {
 //	margin-top: 2rem;
 //	padding-top: 1rem;
-//	border-top: 1px solid var(--base-100);
+//	border-top: 1px solid rgb(var(--base-100));
 //}
 //.create-new-term button {
 //	width: 100%;
@@ -1802,7 +1802,7 @@
 //
 //.suggestion-prompt {
 //	font-size: var(--txt-x-small);
-//	color: var(--contrast-50);
+//	color: rgb(var(--contrast-50));
 //	margin-bottom: 1rem;
 //}
 //
@@ -1825,14 +1825,14 @@
 //.name-row input {
 //	width: 100%!important;
 //	padding: .5rem;
-//	border: 2px solid var(--base-100);
+//	border: 2px solid rgb(var(--base-100));
 //	border-radius: 4px;
-//	background: var(--base);
-//	color: var(--contrast);
+//	background: rgb(var(--base));
+//	color: rgb(var(--contrast));
 //}
 //
 //.name-row input:focus {
-//	border-color: var(--action-0);
+//	border-color: rgb(var(--action-0));
 //	outline: none;
 //}
 //
@@ -1854,15 +1854,15 @@
 //	padding: .5rem 1rem;
 //	border: none;
 //	border-radius: 4px;
-//	background: var(--action-0);
-//	color: var(--base);
+//	background: rgb(var(--action-0));
+//	color: rgb(var(--base));
 //	cursor: pointer;
 //	font-size: var(--txt-x-small);
 //	transition: all .2s ease;
 //}
 //
 //.create-term-form button:hover {
-//	background: var(--action-50);
+//	background: rgb(var(--action-50));
 //}
 //
 //.create-term-form button:disabled {
@@ -1911,8 +1911,8 @@
 //.create-term-form {
 //	position: relative;
 //	z-index: 1;
-//	background: var(--base);
-//	border: 2px solid var(--action-0);
+//	background: rgb(var(--base));
+//	border: 2px solid rgb(var(--action-0));
 //	border-radius: 4px;
 //	padding: 1rem;
 //	margin-top: -2px;
@@ -1991,12 +1991,12 @@
 //}
 //
 //.actions .send-invites {
-//	background-color: var(--action-50);
+//	background-color: rgb(var(--action-50));
 //}
 //.actions .send-invites:hover,
 //.actions .send-invites:focus {
-//	background-color: var(--base);
-//	border-color: var(--action-50);
+//	background-color: rgb(var(--base));
+//	border-color: rgb(var(--action-50));
 //}
 //
 //.dashboard .queue-status-panel {
@@ -2045,26 +2045,26 @@
 ///** UPLOADER **/
 //.upload-item {
 //	position: relative;
-//	border: 1px solid var(--base-200);
+//	border: 1px solid rgb(var(--base-200));
 //	border-radius: 8px;
-//	background: var(--base-50);
+//	background: rgb(var(--base-50));
 //	transition: all .3s ease;
 //}
 //.upload-item:hover {
-//	box-shadow: rgba(var(--base-rgb),var(--op-45)) var(--shdw);
+//	box-shadow: rgba(var(--base),var(--op-45)) var(--shdw);
 //	transform: translateY(-2px);
 //}
 //.upload-item[data-status=processing] {
-//	border-color: var(--action-200);
-//	background: var(--action-100);
+//	border-color: rgb(var(--action-200));
+//	background: rgb(var(--action-100));
 //}
 //.upload-item[data-status=cached] {
-//	border-color: var(--secondary-0);
-//	background: var(--secondary-200);
+//	border-color: rgb(var(--secondary-0));
+//	background: rgb(var(--secondary-200));
 //}
 //.upload-item[data-status=uploading] {
-//	border-color: var(--contrast);
-//	background-color: var(--base-50);
+//	border-color: rgb(var(--contrast));
+//	background-color: rgb(var(--base-50));
 //}
 //.upload-item .preview {
 //	position: relative;
@@ -2074,8 +2074,8 @@
 //	position: absolute;
 //	bottom: .25rem;
 //	right: .25rem;
-//	background-color: rgba(var(--base-rgb),var(--op-3));
-//	box-shadow: rgba(var(--base-rgb),var(--op-45)) var(--shdw);
+//	background-color: rgba(var(--base),var(--op-3));
+//	box-shadow: rgba(var(--base),var(--op-45)) var(--shdw);
 //	border-radius: 50%;
 //}
 //.upload-item img {
@@ -2094,7 +2094,7 @@
 //	left: 0;
 //	right: 0;
 //	bottom: 0;
-//	background: rgba(var(--base-rgb),var(--op-6));
+//	background: rgba(var(--base),var(--op-6));
 //	display: flex;
 //	flex-direction: column;
 //	justify-content: space-between;
@@ -2116,9 +2116,9 @@
 //	position: fixed;
 //	bottom: calc(var(--btn) + 1rem);
 //	right: 1rem;
-//	background-color: var(--base);
+//	background-color: rgb(var(--base));
 //	height: var(--btn);
-//	box-shadow: rgba(var(--base-rgb),var(--op-45)) var(--shdw);
+//	box-shadow: rgba(var(--base),var(--op-45)) var(--shdw);
 //}
 ///*** UPLOADER GROUPS ***/
 //.group-display {
@@ -2131,7 +2131,7 @@
 //	padding: .5rem;
 //	top: calc(var(--btn) + .25rem);
 //	left: 0;
-//	background-color: var(--base-50);
+//	background-color: rgb(var(--base-50));
 //	z-index: 5;
 //}
 //.preview-actions .selected {
@@ -2161,8 +2161,8 @@
 //	gap: 1rem;
 //	margin-top: 1rem;
 //	padding: .5rem;
-//	background: var(--base);
-//	border: 1px solid var(--contrast-200);
+//	background: rgb(var(--base));
+//	border: 1px solid rgb(var(--contrast-200));
 //	border-radius: 8px;
 //	min-height: 60px;
 //}
@@ -2221,7 +2221,7 @@
 //}
 //.upload-item:has([type=checkbox]:checked) .preview {
 //	padding: 1rem;
-//	background-color: var(--secondary-200);
+//	background-color: rgb(var(--secondary-200));
 //}
 //.upload-item:has([open]) {
 //	grid-column: 1 / -1;
@@ -2245,7 +2245,7 @@
 //
 //.dragover:not(.item-grid.groups) {
 //	background-color: var(--overlay-action-medium);
-//	border: 2px dashed var(--action-0);
+//	border: 2px dashed rgb(var(--action-0));
 //}
 //
 //@keyframes dragHover {
@@ -2266,7 +2266,7 @@
 //	display: flex;
 //	justify-content: center;
 //	align-items: center;
-//	border: 2px dashed var(--action-200);
+//	border: 2px dashed rgb(var(--action-200));
 //	border-radius: var(--radius);
 //	margin: 10px 0;
 //	cursor: pointer;
@@ -2282,7 +2282,7 @@
 //	display: grid;
 //	grid-template-columns: repeat(3, 1fr);
 //	gap: .5rem;
-//	border: 2px dashed var(--action-200);
+//	border: 2px dashed rgb(var(--action-200));
 //	border-radius: var(--radius);
 //	margin: 10px 0;
 //	cursor: pointer;
@@ -2294,15 +2294,15 @@
 //.empty-group.dragover,
 //.item-grid.group .item-grid.group:hover,
 //.item-grid.group .item-grid.group.dragover {
-//	border-color: var(--action-0);
+//	border-color: rgb(var(--action-0));
 //	background-color: var(--overlay-action-light);
-//	color: var(--action-50);
+//	color: rgb(var(--action-50));
 //}
 //
 //.upload-group {
-//	background-color: var(--base-100);
+//	background-color: rgb(var(--base-100));
 //	border-radius: var(--radius);
-//	border: 1px solid var(--contrast-200);
+//	border: 1px solid rgb(var(--contrast-200));
 //}
 //.group-actions {
 //	width: 100%;
@@ -2320,10 +2320,10 @@
 ///** RESTORE FROM CACHE **/
 //.restore-notification {
 //	border-radius: var(--radius);
-//	box-shadow: rgba(var(--base-rgb),var(--op-45)) var(--shdw);
+//	box-shadow: rgba(var(--base),var(--op-45)) var(--shdw);
 //	padding: 1rem;
-//	background: var(--base-200);
-//	border: 1px solid var(--contrast-200);
+//	background: rgb(var(--base-200));
+//	border: 1px solid rgb(var(--contrast-200));
 //	border-top-width: 4px;
 //	border-bottom-width: 4px;
 //}
@@ -2363,14 +2363,14 @@
 //	filter: grayscale(0);
 //	opacity: 1;
 //	padding: 1rem;
-//	background-color: var(--secondary-200);
+//	background-color: rgb(var(--secondary-200));
 //}
 //
 //.upload-item .featured + label {
 //	width: 2em;
 //	height: 2em;
 //	border-radius: var(--radius);
-//	background-color: rgba(var(--base-rgb),var(--op-3));
+//	background-color: rgba(var(--base),var(--op-3));
 //	display: flex;
 //	justify-content: center;
 //	align-items: center;
@@ -2419,7 +2419,7 @@
 //
 ///*.all-uploads .active {*/
 ///*    font-weight: 500;*/
-///*    color: var(--contrast);*/
+///*    color: rgb(var(--contrast));*/
 ///*    font-size: .9rem;*/
 ///*}*/
 //
@@ -2428,7 +2428,7 @@
 ///*    border: 1px solid var(--border);*/
 ///*    border-radius: 4px;*/
 ///*    background: var(--surface);*/
-///*    color: var(--contrast);*/
+///*    color: rgb(var(--contrast));*/
 ///*    cursor: pointer;*/
 ///*    transition: all .3s ease;*/
 ///*    font-size: .875rem;*/
@@ -2436,9 +2436,9 @@
 ///*}*/
 //
 ///*.upload-summary button:hover {*/
-///*    background: var(--action-0);*/
+///*    background: rgb(var(--action-0));*/
 ///*    color: var(--action-contrast);*/
-///*    border-color: var(--action-0);*/
+///*    border-color: rgb(var(--action-0));*/
 ///*}*/
 //
 ///*!* Upload Drop Zones *!*/
@@ -2452,7 +2452,7 @@
 //
 ///*.file-upload-container.dragover {*/
 ///*    background-color: var(--action-rgb-subtle);*/
-///*    border-color: var(--action-0);*/
+///*    border-color: rgb(var(--action-0));*/
 ///*    padding: .75rem;*/
 ///*}*/
 ///*    .dragover .file-upload-wrapper {*/
@@ -2522,7 +2522,7 @@
 ///*}*/
 //
 ///*.status.uploading {*/
-///*    background: var(--action-0);*/
+///*    background: rgb(var(--action-0));*/
 ///*    color: var(--action-contrast);*/
 ///*}*/
 //
@@ -2556,7 +2556,7 @@
 ///*    margin-bottom: .25rem;*/
 ///*    font-weight: 500;*/
 ///*    font-size: .9rem;*/
-///*    color: var(--contrast);*/
+///*    color: rgb(var(--contrast));*/
 ///*}*/
 //
 ///*.upload .metadata input,*/
@@ -2572,7 +2572,7 @@
 ///*.upload .metadata input:focus,*/
 ///*.upload .metadata textarea:focus {*/
 ///*    outline: none;*/
-///*    border-color: var(--action-0);*/
+///*    border-color: rgb(var(--action-0));*/
 ///*    box-shadow: 0 0 0 2px var(--action-rgb-subtle);*/
 ///*}*/
 //
@@ -2694,12 +2694,12 @@
 //
 ///*!* Focus Management *!*/
 ///*.upload-item:focus-within {*/
-///*    outline: 2px solid var(--action-0);*/
+///*    outline: 2px solid rgb(var(--action-0));*/
 ///*    outline-offset: 2px;*/
 ///*}*/
 //
 ///*.upload .actions button:focus {*/
-///*    outline: 2px solid var(--action-0);*/
+///*    outline: 2px solid rgb(var(--action-0));*/
 ///*    outline-offset: 2px;*/
 ///*}*/
 //
@@ -3275,9 +3275,9 @@
 ///*    align-items: center;*/
 ///*    gap: 1rem;*/
 ///*    padding: .5rem 1rem;*/
-///*    background-color: var(--action-50);*/
+///*    background-color: rgb(var(--action-50));*/
 ///*    border-radius: var(--radius);*/
-///*    color: var(--contrast);*/
+///*    color: rgb(var(--contrast));*/
 ///*    font-size: .9rem;*/
 ///*}*/
 //
@@ -3306,7 +3306,7 @@
 ///*    justify-content: space-between;*/
 ///*    align-items: center;*/
 ///*    padding: 1rem;*/
-///*    background-color: var(--base-100);*/
+///*    background-color: rgb(var(--base-100));*/
 ///*    border-radius: var(--radius-outer);*/
 ///*    margin-bottom: 1rem;*/
 ///*}*/
@@ -3314,7 +3314,7 @@
 ///*!* Upload Item Enhancements *!*/
 ///*.upload-item {*/
 ///*    position: relative;*/
-///*    background: var(--base);*/
+///*    background: rgb(var(--base));*/
 ///*    border-radius: var(--radius);*/
 ///*    overflow: hidden;*/
 ///*    cursor: pointer;*/
@@ -3323,7 +3323,7 @@
 //
 ///*.upload-item:hover {*/
 ///*    transform: translateY(-2px);*/
-///*    box-shadow: rgba(var(--base-rgb),var(--op-45)) var(--shdw);*/
+///*    box-shadow: rgba(var(--base),var(--op-45)) var(--shdw);*/
 ///*}*/
 //
 ///*.upload-item[draggable="true"] {*/
@@ -3337,7 +3337,7 @@
 ///*}*/
 //
 ///*.upload-item.selected {*/
-///*    border: 2px solid var(--action-50);*/
+///*    border: 2px solid rgb(var(--action-50));*/
 ///*    background: rgba(255, 0, 128, .05);*/
 ///*}*/
 //
@@ -3391,7 +3391,7 @@
 ///*    width: 1.5rem;*/
 ///*    height: 1.5rem;*/
 ///*    border-radius: 50%;*/
-///*    background: var(--base);*/
+///*    background: rgb(var(--base));*/
 ///*    display: flex;*/
 ///*    align-items: center;*/
 ///*    justify-content: center;*/
@@ -3412,7 +3412,7 @@
 //
 ///*!* Group Enhancements *!*/
 ///*.upload-group {*/
-///*    background: var(--base-50);*/
+///*    background: rgb(var(--base-50));*/
 ///*    border-radius: var(--radius-outer);*/
 ///*    padding: 1rem;*/
 ///*    margin-bottom: 1rem;*/
@@ -3421,7 +3421,7 @@
 ///*}*/
 //
 ///*.upload-group.dragover {*/
-///*    border-color: var(--action-50);*/
+///*    border-color: rgb(var(--action-50));*/
 ///*    background: rgba(255, 0, 128, .05);*/
 ///*}*/
 //
@@ -3452,7 +3452,7 @@
 //
 ///*.group-name:focus {*/
 ///*    outline: none;*/
-///*    border-bottom-color: var(--action-50);*/
+///*    border-bottom-color: rgb(var(--action-50));*/
 ///*}*/
 //
 ///*.group-count {*/
@@ -3466,8 +3466,8 @@
 ///*}*/
 //
 ///*.group-actions button {*/
-///*    background: var(--base);*/
-///*    border: 1px solid var(--base-200);*/
+///*    background: rgb(var(--base));*/
+///*    border: 1px solid rgb(var(--base-200));*/
 ///*    border-radius: var(--radius);*/
 ///*    padding: .5rem;*/
 ///*    cursor: pointer;*/
@@ -3478,9 +3478,9 @@
 ///*}*/
 //
 ///*.group-actions button:hover {*/
-///*    background: var(--action-50);*/
-///*    color: var(--contrast);*/
-///*    border-color: var(--action-50);*/
+///*    background: rgb(var(--action-50));*/
+///*    color: rgb(var(--contrast));*/
+///*    border-color: rgb(var(--action-50));*/
 ///*}*/
 //
 ///*.group-actions .delete-group:hover {*/
@@ -3505,9 +3505,9 @@
 //
 ///*.group-drop-zone:hover,*/
 ///*.group-drop-zone.dragover {*/
-///*    border-color: var(--action-50);*/
+///*    border-color: rgb(var(--action-50));*/
 ///*    background: rgba(255, 0, 128, .05);*/
-///*    color: var(--action-50);*/
+///*    color: rgb(var(--action-50));*/
 ///*}*/
 //
 ///*.group-items {*/
@@ -3522,7 +3522,7 @@
 ///*    aspect-ratio: 1;*/
 ///*    border-radius: var(--radius);*/
 ///*    overflow: hidden;*/
-///*    background: var(--base);*/
+///*    background: rgb(var(--base));*/
 ///*    transition: transform .2s ease;*/
 ///*}*/
 //
@@ -3584,7 +3584,7 @@
 //
 ///*!* Empty Group State *!*/
 ///*.empty-group {*/
-///*    border: 4px dashed var(--base-200);*/
+///*    border: 4px dashed rgb(var(--base-200));*/
 ///*    border-radius: var(--radius);*/
 ///*    padding: 2rem;*/
 ///*    text-align: center;*/
@@ -3599,14 +3599,14 @@
 //
 ///*.empty-group:hover,*/
 ///*.empty-group.dragover {*/
-///*    border-color: var(--action-50);*/
+///*    border-color: rgb(var(--action-50));*/
 ///*    background: rgba(255, 0, 128, .05);*/
-///*    color: var(--action-50);*/
+///*    color: rgb(var(--action-50));*/
 ///*}*/
 //
 ///*!* Sidebar *!*/
 ///*.sidebar {*/
-///*    background: var(--base-50);*/
+///*    background: rgb(var(--base-50));*/
 ///*    border-radius: var(--radius-outer);*/
 ///*    padding: 1.5rem;*/
 ///*    min-height: 400px;*/
@@ -3629,8 +3629,8 @@
 //
 ///*.new-group {*/
 ///*    width: 100%;*/
-///*    background: var(--action-50);*/
-///*    color: var(--contrast);*/
+///*    background: rgb(var(--action-50));*/
+///*    color: rgb(var(--contrast));*/
 ///*    border: none;*/
 ///*    border-radius: var(--radius);*/
 ///*    padding: .75rem;*/
@@ -3665,7 +3665,7 @@
 ///*    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));*/
 ///*    gap: 1rem;*/
 ///*    padding: 1rem;*/
-///*    background: var(--base-100);*/
+///*    background: rgb(var(--base-100));*/
 ///*    border-radius: var(--radius-outer);*/
 ///*    min-height: 200px;*/
 ///*}*/
@@ -3682,7 +3682,7 @@
 //
 ///*!* File Upload Container *!*/
 ///*.file-upload-container.dragover {*/
-///*    border-color: var(--action-50);*/
+///*    border-color: rgb(var(--action-50));*/
 ///*    background: rgba(255, 0, 128, .05);*/
 ///*}*/
 //
@@ -3733,7 +3733,7 @@
 ///*.upload-item:focus-within,*/
 ///*.group-item:focus-within,*/
 ///*.upload-group:focus-within {*/
-///*    outline: 2px solid var(--action-50);*/
+///*    outline: 2px solid rgb(var(--action-50));*/
 ///*    outline-offset: 2px;*/
 ///*}*/
 //
@@ -3891,7 +3891,7 @@
 //
 ///*.confirmation-content {*/
 ///*    padding: 2rem;*/
-///*    background: var(--base);*/
+///*    background: rgb(var(--base));*/
 ///*    border-radius: var(--radius-outer);*/
 ///*}*/
 //
@@ -3930,7 +3930,7 @@
 ///*    justify-content: flex-end;*/
 ///*    margin-top: 1.5rem;*/
 ///*    padding-top: 1rem;*/
-///*    border-top: 1px solid var(--base-200);*/
+///*    border-top: 1px solid rgb(var(--base-200));*/
 ///*}*/
 //
 ///*.confirm-start-over {*/
@@ -3949,7 +3949,7 @@
 ///*}*/
 //
 ///*.cancel-start-over {*/
-///*    background: var(--base-100);*/
+///*    background: rgb(var(--base-100));*/
 ///*    color: var(--text);*/
 ///*    border: 1px solid var(--base-300);*/
 ///*    border-radius: var(--radius);*/
@@ -3959,7 +3959,7 @@
 ///*}*/
 //
 ///*.cancel-start-over:hover {*/
-///*    background: var(--base-200);*/
+///*    background: rgb(var(--base-200));*/
 ///*}*/
 //
 ///*!* Responsive Design *!*/
@@ -4881,8 +4881,8 @@
 //	}
 //	/* Preview section - top half of screen */
 //	.preview-wrap {
-//		background: var(--base);
-//		border-bottom: 2px solid var(--action-0);
+//		background: rgb(var(--base));
+//		border-bottom: 2px solid rgb(var(--action-0));
 //	}
 //
 //	/* Preview actions - sticky at top */
@@ -4890,8 +4890,8 @@
 //		position: sticky;
 //		top: 0;
 //		z-index: 10;
-//		background: var(--base);
-//		border-bottom: 1px solid var(--base-200);
+//		background: rgb(var(--base));
+//		border-bottom: 1px solid rgb(var(--base-200));
 //		flex-shrink: 0;
 //	}
 //
@@ -4909,13 +4909,13 @@
 //
 //	/* Groups section - bottom half with sticky header */
 //	.sidebar {
-//		background: var(--base-200);
-//		border-top: 3px solid var(--action-50);
+//		background: rgb(var(--base-200));
+//		border-top: 3px solid rgb(var(--action-50));
 //	}
 //
 //	/* Groups header - sticky */
 //	.sidebar .header {
-//		border-bottom: 1px solid var(--base-200);
+//		border-bottom: 1px solid rgb(var(--base-200));
 //		padding: 1rem;
 //		flex-shrink: 0;
 //	}
@@ -4953,7 +4953,7 @@
 //
 //	.empty-group:hover,
 //	.empty-group.dragover {
-//		border-color: var(--action-0);
+//		border-color: rgb(var(--action-0));
 //		background: var(--action-rgb-subtle-hover);
 //		transform: scale(1.02);
 //	}
@@ -4967,7 +4967,7 @@
 //		height: 3rem;
 //		font-size: 1.1rem;
 //		font-weight: 600;
-//		box-shadow: rgba(var(--base-rgb),var(--op-45)) var(--shdw);
+//		box-shadow: rgba(var(--base),var(--op-45)) var(--shdw);
 //		border-radius: var(--radius-outer);
 //	}
 //
@@ -4980,8 +4980,8 @@
 //	.upload-item {
 //		border-radius: var(--radius);
 //		overflow: hidden;
-//		background: var(--base);
-//		border: 1px solid var(--base-200);
+//		background: rgb(var(--base));
+//		border: 1px solid rgb(var(--base-200));
 //		transition: transform .2s ease;
 //	}
 //
@@ -5013,9 +5013,9 @@
 //
 //	/* Enhanced group styling for mobile */
 //	.upload-group {
-//		background: var(--base-100);
+//		background: rgb(var(--base-100));
 //		border-radius: var(--radius);
-//		border: 1px solid var(--base-200);
+//		border: 1px solid rgb(var(--base-200));
 //		padding: 1rem;
 //		margin-bottom: 1rem;
 //	}
@@ -5026,7 +5026,7 @@
 //		align-items: center;
 //		margin-bottom: 1rem;
 //		padding-bottom: .5rem;
-//		border-bottom: 1px solid var(--base-200);
+//		border-bottom: 1px solid rgb(var(--base-200));
 //		flex-wrap: wrap;
 //		gap: .5rem;
 //	}
@@ -5056,7 +5056,7 @@
 //		aspect-ratio: 1;
 //		border-radius: 4px;
 //		overflow: hidden;
-//		border: 1px solid var(--base-200);
+//		border: 1px solid rgb(var(--base-200));
 //	}
 //
 //	/* Hide file upload container on mobile when in grouping mode */
@@ -5100,7 +5100,7 @@
 //
 //	.dragover {
 //		background: var(--action-rgb-subtle) !important;
-//		border-color: var(--action-0) !important;
+//		border-color: rgb(var(--action-0)) !important;
 //		transform: scale(1.05);
 //		animation: mobile-drop-pulse .8s infinite ease-in-out;
 //	}
@@ -5118,7 +5118,7 @@
 //
 //	/* Enhanced selection states */
 //	.upload-item.selected {
-//		border: 2px solid var(--action-0);
+//		border: 2px solid rgb(var(--action-0));
 //		background-color: var(--action-rgb-subtle);
 //	}
 //
@@ -5127,7 +5127,7 @@
 //		position: absolute;
 //		top: .5rem;
 //		right: .5rem;
-//		background: var(--action-0);
+//		background: rgb(var(--action-0));
 //		color: white;
 //		border-radius: 50%;
 //		width: 24px;
@@ -5159,7 +5159,7 @@
 //	/* Enhanced details/summary for mobile */
 //	.upload-item details summary {
 //		padding: .75rem;
-//		background: var(--base-100);
+//		background: rgb(var(--base-100));
 //		border-radius: var(--radius);
 //		cursor: pointer;
 //		display: flex;
@@ -5172,7 +5172,7 @@
 //
 //	.upload-item details[open] summary {
 //		border-radius: var(--radius) var(--radius) 0 0;
-//		border-bottom: 1px solid var(--base-200);
+//		border-bottom: 1px solid rgb(var(--base-200));
 //	}
 //
 //	/* Enhanced forms for mobile */
@@ -5181,13 +5181,13 @@
 //		padding: .75rem;
 //		font-size: 16px; /* Prevents zoom on iOS */
 //		border-radius: var(--radius);
-//		border: 2px solid var(--base-200);
+//		border: 2px solid rgb(var(--base-200));
 //		transition: border-color .2s ease;
 //	}
 //
 //	.upload-meta input:focus,
 //	.upload-meta textarea:focus {
-//		border-color: var(--action-0);
+//		border-color: rgb(var(--action-0));
 //		outline: none;
 //		box-shadow: 0 0 0 3px var(--action-rgb-subtle);
 //	}
@@ -5550,7 +5550,7 @@
 //	left: 0;
 //	right: 0;
 //	z-index: 50;
-//	background: var(--base);
+//	background: rgb(var(--base));
 //}
 //
 //.form-actions {
@@ -5561,7 +5561,7 @@
 //	width: 12px;
 //	height: 12px;
 //	border: 2px solid transparent;
-//	border-top: 2px solid var(--action-50);
+//	border-top: 2px solid rgb(var(--action-50));
 //	border-radius: 50%;
 //	animation: spin 1s linear infinite;
 //}
diff --git a/src/glossary/style.scss b/src/glossary/style.scss
index a367991..241e6ef 100644
--- a/src/glossary/style.scss
+++ b/src/glossary/style.scss
@@ -36,14 +36,14 @@
 		--justify: center;
 		padding: .25rem .5rem;
 		hyphens: auto;
-		background-color: rgba(var(--base-rgb),var(--op-45));
+		background-color: rgba(var(--base),var(--op-45));
 		word-wrap: anywhere;
 		white-space: wrap;
 	}
 	a:hover,
 	a:focus,
 	a.active {
-		background-color: rgba(var(--action-rgb), var(--op-6));
+		background-color: rgba(var(--action-0), var(--op-6));
 		color: var(--action-contrast);
 	}
 }
@@ -64,7 +64,7 @@
 	outline: none;
 	left: -1.5rem;
 	padding: 0;
-	color: var(--action-0);
+	color: rgb(var(--action-0));
 }
 	.glossary dt:target + dd,
 	.glossary dt.active + dd {
diff --git a/src/gmbreviews/style.scss b/src/gmbreviews/style.scss
index 19f3abb..bb0e08d 100644
--- a/src/gmbreviews/style.scss
+++ b/src/gmbreviews/style.scss
@@ -31,15 +31,15 @@
 			max-width: none;
 			padding: 4rem 1rem;
 			&:nth-of-type(odd) {
-				background-color: var(--base-50);
+				background-color: rgb(var(--base-50));
 				blockquote {
-					--background: var(--base-50);
+					--background: rgb(var(--base-50));
 				}
 			}
 			&:nth-of-type(even) {
-				background-color: var(--base-100);
+				background-color: rgb(var(--base-100));
 				blockquote {
-					--background: var(--base-100);
+					--background: rgb(var(--base-100));
 				}
 			}
 		}
@@ -89,12 +89,12 @@
 		}
 	}
 	.stars .icon {
-		background-color: var(--action-0);
+		background-color: rgb(var(--action-0));
 	}
 	article {
 		padding: 1rem;
 		border-radius: var(--radius-outer);
-		background-color: var(--base);
+		background-color: rgb(var(--base));
 		header {
 			--align: center;
 			>img {
@@ -113,7 +113,7 @@
 			width: max-content;
 		}
 		.icon {
-			color: var(--action-0);
+			color: rgb(var(--action-0));
 		}
 	}
 	.footer .button {
diff --git a/src/timeline/style.scss b/src/timeline/style.scss
index ea20261..0810a91 100644
--- a/src/timeline/style.scss
+++ b/src/timeline/style.scss
@@ -11,7 +11,7 @@
 	img {
 		width: 100%;
 		height: auto;
-		border: 2px solid var(--action-0);
+		border: 2px solid rgb(var(--action-0));
 	}
 	h3 {
 		font-size: var(--txt-x-small);
@@ -37,7 +37,7 @@
 	--gap: 2rem;
 	padding: 0;
 	margin:0;
-	background-color: var(--base);
+	background-color: rgb(var(--base));
 	max-width: 100vw;
 	position: relative;
 	overflow: hidden;
@@ -61,7 +61,7 @@
 				position: absolute;
 				left: -2.5rem;
 				top: .25rem;
-				background-color: var(--action-100);
+				background-color: rgb(var(--action-100));
 			}
 		}
 
@@ -74,7 +74,7 @@
 		left: 45%;
 		height: 100%;
 		width: var(--lineWidth);
-		background-color: var(--action-0);
+		background-color: rgb(var(--action-0));
 		//box-shadow: var(--action-shadow);
 	}
 	&::before {
diff --git a/src/video/style.scss b/src/video/style.scss
index d16e7d9..aa4cd61 100644
--- a/src/video/style.scss
+++ b/src/video/style.scss
@@ -6,14 +6,14 @@
 	overflow: hidden;
 	display: flex;
 	.wrap {
-		background-color: var(--contrast-200);
+		background-color: rgb(var(--contrast-200));
 		//&::before {
 		//	position: absolute;
 		//	top: 0;
 		//	bottom: 0;
 		//	left: 0;
 		//	right: 0;
-		//	background-color: var(--base);
+		//	background-color: rgb(var(--base));
 		//	mix-blend-mode: lighten;
 		//	content: '';
 		//	z-index: 1;
@@ -30,7 +30,7 @@
 		min-height: 100%;
 		z-index: 0;
 		display: flex;
-		background-color: var(--action-50);
+		background-color: rgb(var(--action-50));
 
 		&.fade {
 			animation: fadeIn 1s ease-in;
@@ -95,18 +95,18 @@
 				}
 			}
 			&:hover {
-				background-color: var(--action-0);
+				background-color: rgb(var(--action-0));
 				color: var(--action-contrast);
 			}
 		}
 
 		.outline a {
-			background-color: rgba(var(--base-rgb), rgba(var(--base-rgb),var(--op-3)));
+			background-color: rgba(var(--base), rgba(var(--base),var(--op-3)));
 		}
 		.buttons {
 			margin: 3rem 0;
 			li {
-				background-color: rgba(var(--action-rgb), var(--op-4));
+				background-color: rgba(var(--action-0), var(--op-4));
 			}
 		}
 		/* Button styles */

--
Gitblit v1.10.0