/****************************************************************** FORM INPUTS - BASE ******************************************************************/ textarea, input:is([type=date], [type=number], [type=text], [type=url], [type=email], [type=tel], [type=password], [type=search], [type=datetime-local], [type=time]) { font-family: var(--body); font-size: var(--txt-medium); color: var(--contrast); padding: var(--p-y) var(--p-x); border-radius: var(--radius); background-color: var(--base); outline: 0; border: 1px solid var(--base-100); border-bottom: 2px solid var(--contrast-200); width: 100%; max-width: 100%; margin: 0 4px; } /****************************************************************** FORM INPUTS - STATES ******************************************************************/ textarea:focus, input:is([type=date], [type=number], [type=text], [type=url], [type=email], [type=tel], [type=password], [type=search], [type=datetime-local], [type=time]):focus { outline: var(--action-50); background-color: var(--base-100); color: var(--contrast); } textarea::placeholder, input::placeholder { font-family: var(--body); color: var(--base-200); } @media (min-width: 768px) { :root { --p-y: 1rem; } } /****************************************************************** SELECT ******************************************************************/ select { background: var(--base); border: 2px solid var(--base-100); border-radius: var(--radius); color: var(--contrast); cursor: pointer; font-family: var(--body); font-size: var(--txt-small); padding: .5rem 1rem; width: 100%; } select:disabled { background-color: var(--base-50); border-color: var(--base-100); color: var(--base-200); cursor: not-allowed; } select option { background: var(--base); color: var(--contrast); padding: .5rem; } select option:hover, select option:focus, select option:active, select option:checked { background: var(--action-0); color: var(--base); box-shadow: 0 0 0 100px var(--action-0) inset; } select option:checked { background: var(--action-0) linear-gradient(0deg, var(--action-0) 0%, var(--action-0) 100%); color: var(--base); } select:hover { border-color: var(--action-0); } select:focus { border-color: var(--action-0); } /****************************************************************** SEARCH & SPECIAL INPUTS ******************************************************************/ input[type=search]:focus + .clear-search { opacity: 1; cursor: pointer; } .search-container .clear-search { opacity: 0; cursor: default; } .search-container .icon.search { padding: 4px 8px; color: var(--contrast-200); --w: 3rem; } input[type="search"]::-moz-search-clear-button, input[type="search"]::-ms-clear, input[type="search"]::-ms-reveal, input[type="search"]::search-cancel-button { -webkit-appearance: none; -moz-appearance: none; appearance: none; display: none; visibility: hidden; } input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-results-button, input[type="search"]::-webkit-search-results-decoration { -webkit-appearance:none; } input[type=url] { background: var(--linkIcon); background-position: .5em; background-size: 1em; background-repeat: no-repeat; padding-left: 2em; } /****************************************************************** LABELS & FIELDS ******************************************************************/ .integration .label, label { text-transform: uppercase; font-weight: bold; margin-bottom: .5rem; display: block; } .field { margin: 2rem 0; position: relative; } .field:has(.has-tooltip) label { margin-left: 2rem; } legend { padding: 0 1rem; } /********************** DATE & TIME FIELDS **********************/ .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; } .field-input-wrapper input:is([type=time], [type=datetime-local], [type=date]):focus, .time-wrapper input[type=time]:focus, .datetime-wrapper input[type=datetime-local]:focus, .date-wrapper input[type=date]:focus { border-color: var(--action-0); box-shadow: 0 0 0 2px rgba(var(--action-rgb), .1); } .field-input-wrapper .icon, .time-wrapper .icon, .datetime-wrapper .icon, .date-wrapper .icon { width: 18px; height: 18px; background-color: var(--contrast); opacity: .7; } /********************** SPECIAL FIELDS **********************/ /*.remove-item {*/ /* background: none;*/ /* border: none;*/ /* padding: .25rem;*/ /* cursor: pointer;*/ /* color: #666;*/ /* border-radius: var(--radius);*/ /* width: 1.5em;*/ /* height: 1.5em;*/ /*}*/ /*.remove-item .close {*/ /* width: .5em;*/ /* height: .5em;*/ /*}*/ /*.remove-item:hover {*/ /* color: var(--action-0);*/ /* background: #fee;*/ /*}*/ /****************************************************************** CHECKBOXES & RADIOS ******************************************************************/ [type=radio], [type=checkbox], input.ch { position: absolute; opacity: 0; left: -200vw; } [type=radio] + label, [type=checkbox] + label, input.ch + label { position: relative; cursor: pointer; } [type=radio] + label:hover, [type=checkbox] + label:hover { color: var(--action-0); } [type=radio] + label::before, [type=checkbox] + label::before, input.ch + label::before, [type=radio] + label::after, [type=checkbox] + label::after, input.ch + label::after { content: ''; position: absolute; top: 50%; } [type=radio] + label::after, [type=checkbox] + label::after, input.ch + label::after { left: 5px; transform: translateY(-70%) rotate(45deg); width: 5px; height: 10px; border: solid var(--light-0); border-width: 0 2px 2px 0; display: none; } [type=radio] + label::before, [type=checkbox] + label::before, input.ch + label::before { left: 0; transform: translateY(-50%); width: 1rem; height: 1rem; border: 2px solid var(--contrast-200); background-color: var(--base); border-radius: var(--radius); } [type=radio]:hover + label::before, [type=checkbox]:hover + label::before, input.ch:hover + label::before { border-color: var(--action-200); } [type=radio]:checked + label::before, [type=checkbox]:checked + label::before, input.ch:checked + label::before { background-color: var(--action-0); border-color: var(--action-100); } [type=radio]:checked + label::before { border-radius: 50%; } [type=checkbox]:checked + label::after, input.ch:checked + label::after { display: block; left: 5px; top: 50%; transform: translateY(-70%) rotate(45deg); width: .35rem; height: .66rem; border: solid var(--light-0); border-width: 0 2px 2px 0; } [type=radio]:disabled + label, [type=checkbox]:disabled + label, input.ch:disabled + label { cursor: not-allowed; background-color: var(--base-50); color: var(--base-200); border-color: var(--base-200); } [type=radio]:disabled + label:hover, [type=checkbox]:disabled + label:hover, input.ch:disabled + label:hover { background-color: var(--base-50); color: var(--base-200); border-color: var(--base-200); } [type=radio]:disabled + label::before, [type=checkbox]:disabled + label::before, input.ch:disabled + label::before { border-color: var(--base-200); } [type=radio]:not(.btn) + label, [type=checkbox]:not(.btn) + label, input.ch + label { flex: 1; padding-left: 2rem; transform-origin: top center; will-change: transform; } /* Button-style checkboxes/radios */ .btn + label::before, .btn + label::after { display: none; } .btn + label { --w: 1.2em; border: 1px solid var(--base-200); border-radius: var(--radius); min-width: 2rem; min-height: 2rem; margin: 0; display: flex; justify-content: center; align-items: center; flex-wrap: nowrap; gap: .5rem; color: var(--contrast-200); opacity: .8; } .radio-options.status label { padding: 0 .5rem; } .btn:checked + label { border-color: var(--contrast); color: var(--contrast); opacity: 1; } .btn + label:hover { color: var(--action-50); border-color: var(--action-50); } input[hidden] + label, .btn[hidden] + label { display: none!important; } .checkbox-options { --gap: .5rem 2rem; } .checkbox-options label { flex: unset!important; } .radio-options { --gap: .125rem .5rem; } .radio-options input:not(.ch) + label::before { display: none!important; } .radio-options input:not(.ch) + label { flex: unset!important; padding: .25rem!important; border-radius: 4px; border: 1px solid var(--base-100); color: var(--contrast-200); font-weight: normal; text-align: center; } .radio-options input:not(.ch) + label:hover, .radio-options input:not(.ch):checked + label { border-color: var(--action-0); color: var(--action-0); } /****************************************************************** QUANTITY FIELD ******************************************************************/ .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-outer-spin-button, .quantity input[type=number]::-webkit-inner-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; } /****************************** TABS ******************************/ .tab-content[hidden] { display: block!important; transform: scaleY(0); height: 0; overflow: hidden; } .tab-content[hidden]:focus-within { transform: scaleY(1); height:auto; } nav.tabs h2 { margin: 0!important; line-height: 1; font-size: var(--txt-medium); display: flex; color: var(--contrast); white-space: nowrap; gap: 1rem; } nav.tabs .active h2 { color: var(--action-contrast); } nav.tabs button { padding: .75rem 1.5rem; border-radius: 0; position: relative; border: 2px solid var(--action-0); } nav.tabs > button:first-of-type { border-top-left-radius: var(--radius); } nav.tabs > button:last-of-type { border-top-right-radius: var(--radius); } .tabs > button:hover, .tabs > button:focus { background-color: var(--base-200); } .tabs > button::after { content: ''; position: absolute; bottom: -2px; left: 0; width: 0; height: 3px; background-color: var(--action-50); transition: width .3s; } .tabs > button:hover::after, .tabs > button.active::after { width: 100%; } .tabs > button.active::after { background-color: var(--action-200); } .tabs > button.active { background-color: var(--action-0); color: var(--action-contrast); } .tabs > button.active:hover, .tabs > button.active:focus { background-color: var(--action-100); } .tab-content h2 { display: none; } /************* DONE TO HERE *****/ details.uploader .file-upload-container { margin: 1rem 0; max-width: 100%; } @media (min-width: 768px) { details.uploader .file-upload-container { margin: 1rem var(--mr) 1rem var(--ml); max-width: var(--content); } } /*.field.upload .item-grid,*/ /*.field.upload [data-upload-id] {*/ /* touch-action: none;*/ /*}*/ .empty-group, .file-upload-wrapper { 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; } .file-upload-wrapper h2 { margin: 0!important; font-size: var(--txt-large); } .empty-group, .file-upload-wrapper:hover, .dragover { background: rgba(var(--action-rgb),var(--op-2)); border-color: var(--action-0)!important; } .file-upload-wrapper input[type="file"] { position: absolute; left: 0; top: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; } .empty-group p, .file-upload-text { color: var(--contrast); margin: 0; } .empty-group p strong, .file-upload-text strong { color: var(--action-0); text-decoration: underline; } .field.upload { position: relative; } .field.upload:not(.uploading) .progress { display: none; } .field.upload .actions { position: absolute; top: 0; right: 0; } .item-grid.groups { grid-template-columns: repeat(1, 1fr); } .item-grid.group { margin-bottom: 0; } .item-grid.restore .item, .item-grid.group .item, .item-grid.preview .item { display: block; } .item-grid.restore button, .item-grid.group button, .item-grid.preview button { padding: .25rem .5rem; } .item-grid.restore button .icon, .item-grid.group button .icon, .item-grid.preview button .icon { --w: 1.1em; } .item-grid.restore .item .preview > input[type=checkbox]:not(.label-button) + label, .item-grid.preview .item .preview > input[type=checkbox]:not(.label-button) + label, .item-grid.group .item .preview > input[type=checkbox]:not(.label-button) + label { padding-left: 0; margin: 0; } .item-grid.restore .item .preview > input[type=checkbox] + label:before, .item-grid.preview .item .preview > input[type=checkbox] + label:before, .item-grid.group .item .preview > input[type=checkbox] + label:before { transform: unset; top: .5rem; left: .5rem; } .item-grid.restore .item .preview > input[type=checkbox] + label::after, .item-grid.preview .item .preview > input[type=checkbox] + label::after, .item-grid.group .item .preview > input[type=checkbox] + label::after { top: .5rem; left: .75rem; transform: translateY(20%) rotate(45deg); } .item-grid.restore .item .item-actions, .item-grid.preview .item .item-actions, .item-grid.group .item .item-actions { position: absolute; top: 0; right: 0; padding-left: var(--chipchip); } .item-grid.restore summary, .item-grid.preview summary, .item-grid.group summary { padding: .5rem; } .item-grid.restore:has([type=checkbox]:checked), .item-grid.preview:has([type=checkbox]:checked), .item-grid.group:has([type=checkbox]:checked) { padding: 1rem; background-color: rgba(var(--contrast-rgb),var(--op-1)); } .item-grid.restore:has([type=checkbox]:checked) .item, .item-grid.preview:has([type=checkbox]:checked) .item, .item-grid.group:has([type=checkbox]:checked) .item { padding: .75rem; opacity: .8; } .item-grid.restore:has([type=checkbox]:checked) .item img, .item-grid.preview:has([type=checkbox]:checked) .item img, .item-grid.group:has([type=checkbox]:checked) .item img { filter: var(--filter); } .item-grid.restore:has([type=checkbox]:checked) details, .item-grid.preview:has([type=checkbox]:checked) details, .item-grid.group:has([type=checkbox]:checked) details { display: none; } .item-grid.restore .item:has([type=checkbox]:checked), .item-grid.preview .item:has([type=checkbox]:checked), .item-grid.group .item:has([type=checkbox]:checked) { padding: .5rem; background-color: rgba(var(--action-rgb), var(--op-4)); opacity: 1; } .item-grid.preview summary span { display: none; } .item-grid.restore .item:has([type=checkbox]:checked) img, .item-grid.preview .item:has([type=checkbox]:checked) img, .item-grid.group .item:has([type=checkbox]:checked) img { filter: none; } [type=radio].featured:checked + label .icon-star, [type=radio].featured + label .icon-star-fi { display: none; } [type=radio].featured + label .icon-star, [type=radio].featured:checked + label .icon-star-fi { display: inline-block; } .restore.restore.item, .upload.upload.item { border-radius: var(--radius); aspect-ratio: unset; overflow: hidden; background: var(--base); border: 1px solid var(--base-200); } .restore-item [for="select-item"], .upload.item [for="select-item"] { aspect-ratio: 1; } .upload.item:has(details[open]) { grid-column: 1 / -1; } .restore.item img, .upload.item img { transition: transform var(--trans-base); } .restore.item:hover img, .upload.item:hover img { transform: scale(1.02); transition: transform var(--trans-base); } .upload-group { background-image: var(--dashed-action); 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; right: 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; background-image: var(--dashed-action); 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; } .upload.item.dragging, .dragging { opacity: .7; transform: scale(.95) rotate(3deg); z-index: var(--z-7); box-shadow: 0 8px 25px rgba(0,0,0,.3); } .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: 0.9; transform: scale(1.05); transition: transform 0.2s ease; } .drag-preview .drag-items { width: max-content; height: max-content; position: relative; } .drag-preview .drag-items .drag-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: 0.03s; } .drag-preview .drag-items .drag-item:nth-child(3) { left: -6px; top: -8px; transform: rotate(-5deg); z-index: 1; transition-delay: 0.06s; } .drag-preview .drag-items .drag-item:nth-child(4) { left: 12px; top: -12px; transform: rotate(3deg); z-index: 0; transition-delay: 0.09s; } /* Additional items follow the pattern */ .drag-preview .drag-items .drag-item:nth-child(n+5) { left: -10px; top: -16px; transform: rotate(-4deg); z-index: 0; opacity: 0.8; } /* The actual image/video inside fills the wrapper */ .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: bold; box-shadow: rgba(var(--base-rgb),var(--op-45)) var(--shdw); z-index: var(--z-3); } /* Touch-specific offset positioning handled via transform in JS */ .drag-preview[data-source="touch"] { /* JS will apply appropriate offset transforms */ } /* Items being dragged - reduce opacity on originals */ .item.dragging { opacity: 0.5; transform: scale(0.95); filter: grayscale(50%); transition: opacity 0.2s ease, transform 0.2s ease, filter 0.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); } } /****** Upload grouping ******/ .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-wrap > .hint, .group-display .sidebar > .hint, .group-display .preview-actions { 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 label, .group-display .field { 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; } .sidebar > .hint, .preview-wrap .hint { bottom: -1rem; padding-bottom: 1rem; margin: 0; left: 0; right: 0; text-align: center; } } .item-grid.restore { grid-template-columns: repeat(1, 1fr); } /************************************************************* Tabs in dialog elements ************************************************************/ dialog nav.tabs { position: sticky; top: 0; background-color: var(--base-50); z-index: var(--z-6); box-shadow: rgba(var(--base-rgb),var(--op-45)) var(--shdw-down); margin-bottom: 2rem; } /************************************************************ QUILL ************************************************************/ .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 .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: 0px 0px 5px rgba(var(--base-rgb),var(--op-6)); color: var(--contrast); padding: 5px 12px; white-space: nowrap; } /****************************************************** FIELDS ******************************************************/ [data-type=single] .item-grid { display: flex; } /****************************************************** REPEATER ******************************************************/ .repeater-row details summary::after { margin-left: 0; } .repeater-row details summary button { margin-left: auto; } /******************************************************* UPLOADER *******************************************************/ /*!* Group actions buttons - more visible *!*/ /*.group-actions {*/ /* display: flex;*/ /* gap: 0.5rem;*/ /*}*/ /*.group-actions button {*/ /* padding: 0.5rem 0.75rem;*/ /* border-radius: var(--radius);*/ /* background: rgba(var(--action-rgb), 0.1);*/ /* border: 1px solid rgba(var(--action-rgb), 0.3);*/ /* color: var(--action-0);*/ /* font-size: var(--txt-small);*/ /* transition: all var(--trans-base);*/ /* cursor: pointer;*/ /*}*/ /*.group-actions button:hover {*/ /* background: rgba(var(--action-rgb), 0.2);*/ /* border-color: var(--action-0);*/ /* transform: translateY(-1px);*/ /*}*/ /*!* Group item grid - distinct from preview grid *!*/ /*.item-grid.group {*/ /* background: rgba(255, 255, 255, 0.5);*/ /* border: 1px solid rgba(var(--action-rgb), 0.15);*/ /* border-radius: var(--radius);*/ /* padding: 0.75rem;*/ /* min-height: 100px;*/ /*}*/ /*!* Group count hint *!*/ /*.group-count {*/ /* margin-top: 0.5rem;*/ /* font-size: var(--txt-small);*/ /* color: var(--contrast-70);*/ /* font-style: italic;*/ /*}*/ /*!* ============================================================================*/ /* FIX #2: Improve drag preview styling*/ /* ============================================================================ *!*/ /*!* Base drag preview *!*/ /*.drag-preview {*/ /* pointer-events: none;*/ /* z-index: 10000;*/ /* position: fixed;*/ /*}*/ /*!* Single item drag preview *!*/ /*.drag-preview:not(.multi-item) {*/ /* opacity: 0.9;*/ /* transform: scale(1.05);*/ /* border-radius: 4px;*/ /* box-shadow: 0 8px 24px rgba(0,0,0,0.3);*/ /* border: 2px solid var(--action-0);*/ /*}*/ /*!* Multi-item drag preview container *!*/ /*.drag-preview.multi-item {*/ /* width: 120px;*/ /* height: 120px;*/ /* opacity: 0.95;*/ /*}*/ /*!* Items being dragged - reduce opacity on originals *!*/ /*.upload.item.dragging {*/ /* opacity: 0.5;*/ /* transform: scale(0.95);*/ /* filter: grayscale(50%);*/ /*}*/ /*!* Count badge on multi-item preview *!*/ /*.selection-count-badge {*/ /* position: absolute;*/ /* top: -8px;*/ /* right: -8px;*/ /* background: var(--action-0);*/ /* color: white;*/ /* border-radius: 50%;*/ /* width: 28px;*/ /* height: 28px;*/ /* display: flex;*/ /* align-items: center;*/ /* justify-content: center;*/ /* font-size: 13px;*/ /* font-weight: bold;*/ /* box-shadow: 0 3px 12px rgba(0,0,0,0.4);*/ /* z-index: 20;*/ /* border: 2px solid white;*/ /*}*/ /*!* ============================================================================*/ /* FIX #3: Progress bar visibility and styling*/ /* ============================================================================ *!*/ /*!* Ensure progress bar is visible when needed *!*/ /*.field.upload .progress {*/ /* display: flex;*/ /* flex-direction: column;*/ /* gap: 0.5rem;*/ /* padding: 1rem;*/ /* background: rgba(var(--action-rgb), 0.05);*/ /* border: 1px solid rgba(var(--action-rgb), 0.2);*/ /* border-radius: var(--radius);*/ /* margin: 1rem 0;*/ /* animation: slideDown var(--trans-base);*/ /*}*/ /*.field.upload .progress[hidden] {*/ /* display: none !important;*/ /*}*/ /*!* Progress bar track *!*/ /*.progress .bar {*/ /* width: 100%;*/ /* height: 8px;*/ /* background: rgba(var(--action-rgb), 0.15);*/ /* border-radius: 4px;*/ /* overflow: hidden;*/ /* position: relative;*/ /*}*/ /*!* Progress bar fill *!*/ /*.progress .fill {*/ /* height: 100%;*/ /* background: linear-gradient(90deg,*/ /* var(--action-0) 0%,*/ /* var(--action-200) 100%);*/ /* border-radius: 4px;*/ /* transition: width 0.3s ease;*/ /* box-shadow: 0 0 8px rgba(var(--action-rgb), 0.4);*/ /*}*/ /*!* Progress details - styled for row layout with text and count *!*/ /*.progress > .details {*/ /* font-size: var(--txt-small);*/ /* color: var(--contrast);*/ /* display: flex;*/ /* justify-content: space-between;*/ /* align-items: center;*/ /* gap: 1rem;*/ /*}*/ /*.progress > .details .text {*/ /* font-weight: 500;*/ /* flex: 1;*/ /*}*/ /*.progress > .details .count {*/ /* font-weight: 600;*/ /* color: var(--contrast-70);*/ /* white-space: nowrap;*/ /*}*/ /*!* Individual item progress - overlay style *!*/ /*.upload.item .progress {*/ /* position: absolute;*/ /* top: 0;*/ /* left: 0;*/ /* right: 0;*/ /* bottom: 0;*/ /* background: rgba(0, 0, 0, 0.75);*/ /* display: flex;*/ /* align-items: center;*/ /* justify-content: center;*/ /* flex-direction: column;*/ /* gap: 0.5rem;*/ /* z-index: var(--z-2);*/ /* color: white;*/ /* border-radius: var(--radius);*/ /* backdrop-filter: blur(2px);*/ /*}*/ /*.upload.item .progress .bar {*/ /* width: 80%;*/ /* max-width: 200px;*/ /*}*/ /*.upload.item .progress .fill {*/ /* background: linear-gradient(90deg, white 0%, rgba(255,255,255,0.8) 100%);*/ /*}*/ /*!* Item progress icon and status text *!*/ /*.upload.item .progress span.icon {*/ /* font-size: 2rem;*/ /* display: flex;*/ /* align-items: center;*/ /* justify-content: center;*/ /*}*/ /*.upload.item .progress span.details {*/ /* color: white;*/ /* font-size: var(--txt-small);*/ /* font-weight: 500;*/ /*}*/ /*!* ============================================================================*/ /* FIX #4: Ensure file upload container hides when items exist*/ /* ============================================================================ *!*/ /*!* Hide uploader when we have uploads *!*/ /*.field.upload:has(.upload.item) .file-upload-container,*/ /*.field.upload[data-has-uploads="true"] .file-upload-container {*/ /* display: none !important;*/ /*}*/ /*!* Show group display when we have uploads *!*/ /*.field.upload:has(.upload.item) .group-display {*/ /* display: flex !important;*/ /*}*/ /*!* ============================================================================*/ /* FIX #5: Improve selection visual feedback*/ /* ============================================================================ *!*/ /*!* Selected items - more obvious *!*/ /*.upload.item:has(.upload-select:checked) {*/ /* outline: 3px solid var(--action-0);*/ /* outline-offset: -3px;*/ /* box-shadow: 0 0 0 3px rgba(var(--action-rgb), 0.2);*/ /*}*/ /*!* Selection checkbox - always visible on hover or when checked *!*/ /*.upload.item .upload-select + label::before {*/ /* opacity: 0.7;*/ /* transition: all var(--trans-base);*/ /*}*/ /*.upload.item:hover .upload-select + label::before,*/ /*.upload.item .upload-select:checked + label::before {*/ /* opacity: 1;*/ /* background: rgba(255, 255, 255, 0.9);*/ /*}*/ /*!* Selection controls - more prominent *!*/ /*.selection-actions {*/ /* display: flex;*/ /* gap: 1rem;*/ /* padding: 1rem;*/ /* background: rgba(var(--action-rgb), 0.1);*/ /* border: 2px solid rgba(var(--action-rgb), 0.3);*/ /* border-radius: var(--radius);*/ /* margin: 1rem 0;*/ /* align-items: center;*/ /* justify-content: space-between;*/ /*}*/ /*.selection-info {*/ /* font-weight: 600;*/ /* color: var(--action-0);*/ /*}*/ /*.selection-count {*/ /* font-size: var(--txt-large);*/ /* color: var(--action-0);*/ /*}*/ /*!* ============================================================================*/ /* FIX #6: Animations*/ /* ============================================================================ *!*/ /*@keyframes slideDown {*/ /* from {*/ /* opacity: 0;*/ /* transform: translateY(-10px);*/ /* }*/ /* to {*/ /* opacity: 1;*/ /* transform: translateY(0);*/ /* }*/ /*}*/ /*@keyframes fadeOut {*/ /* from {*/ /* opacity: 1;*/ /* }*/ /* to {*/ /* opacity: 0;*/ /* }*/ /*}*/ /*!* Smooth dragover animation *!*/ /*@keyframes drop-pulse {*/ /* 0%, 100% {*/ /* background-color: rgba(var(--action-rgb), 0.15);*/ /* transform: scale(1.02);*/ /* }*/ /* 50% {*/ /* background-color: rgba(var(--action-rgb), 0.25);*/ /* transform: scale(1.04);*/ /* }*/ /*}*/ /*!* ============================================================================*/ /* FIX #7: Touch-friendly improvements*/ /* ============================================================================ *!*/ /*@media (hover: none) and (pointer: coarse) {*/ /* !* Larger touch targets on mobile *!*/ /* .group-actions button {*/ /* padding: 0.75rem 1rem;*/ /* font-size: var(--base);*/ /* }*/ /* !* More obvious empty group on touch devices *!*/ /* .empty-group {*/ /* padding: 4rem 2rem;*/ /* min-height: 200px;*/ /* }*/ /* !* Selection checkbox always visible on touch *!*/ /* .upload.item .upload-select + label::before {*/ /* opacity: 1;*/ /* }*/ /*}*/ /*!* ============================================================================*/ /* RESTORATION NOTIFICATION STYLES*/ /* Add these to forms.css or dash.css*/ /* ============================================================================ *!*/ /*!* Notification container - fixed overlay *!*/ /*.restore-notification {*/ /* position: fixed;*/ /* top: 0;*/ /* left: 0;*/ /* right: 0;*/ /* bottom: 0;*/ /* background: rgba(0, 0, 0, 0.7);*/ /* backdrop-filter: blur(4px);*/ /* z-index: 10000;*/ /* display: flex;*/ /* align-items: center;*/ /* justify-content: center;*/ /* padding: 2rem;*/ /* animation: fadeIn 0.3s ease;*/ /*}*/ /*!* Content card *!*/ /*.restore-content {*/ /* background: var(--base);*/ /* border-radius: var(--radius);*/ /* box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4);*/ /* max-width: 800px;*/ /* max-height: 90vh;*/ /* width: 100%;*/ /* display: flex;*/ /* flex-direction: column;*/ /* overflow: hidden;*/ /*}*/ /*!* Message section *!*/ /*.restore-message {*/ /* padding: 2rem;*/ /* border-bottom: 1px solid var(--border);*/ /*}*/ /*.restore-message h4 {*/ /* margin: 0 0 0.5rem 0;*/ /* color: var(--action-0);*/ /* font-size: var(--txt-large);*/ /*}*/ /*.restore-message .restore-details {*/ /* margin: 0.5rem 0;*/ /* font-weight: 600;*/ /* color: var(--contrast);*/ /*}*/ /*.restore-message .hint {*/ /* margin: 0.5rem 0 0 0;*/ /* font-size: var(--txt-small);*/ /* color: var(--contrast-70);*/ /*}*/ /*!* Scrollable field list *!*/ /*.restore-notification .restore-field {*/ /* padding: 1rem 2rem;*/ /* border-bottom: 1px solid var(--border);*/ /* max-height: 400px;*/ /* overflow-y: auto;*/ /*}*/ /*.restore-notification .restore-field:last-of-type {*/ /* border-bottom: none;*/ /*}*/ /*.restore-notification .restore-field h3 {*/ /* margin: 0 0 1rem 0;*/ /* font-size: var(--base);*/ /* color: var(--contrast);*/ /* display: flex;*/ /* align-items: center;*/ /* gap: 0.5rem;*/ /*}*/ /*!* Item grid for restore preview *!*/ /*.item-grid.restore {*/ /* display: grid;*/ /* grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));*/ /* gap: 1rem;*/ /* padding: 0;*/ /*}*/ /*!* Restore item *!*/ /*.restore-item {*/ /* display: flex;*/ /* flex-direction: column;*/ /* border: 2px solid var(--border);*/ /* border-radius: var(--radius);*/ /* overflow: hidden;*/ /* cursor: pointer;*/ /* transition: all var(--trans-base);*/ /* position: relative;*/ /*}*/ /*.restore-item:hover {*/ /* border-color: var(--action-0);*/ /* box-shadow: 0 2px 8px rgba(var(--action-rgb), 0.2);*/ /*}*/ /*!* Checked state *!*/ /*.restore-item:has(.restore-checkbox:checked) {*/ /* border-color: var(--action-0);*/ /* background: rgba(var(--action-rgb), 0.05);*/ /*}*/ /*!* Preview section *!*/ /*.restore-item .preview {*/ /* position: relative;*/ /* aspect-ratio: 1;*/ /* background: var(--subtle);*/ /* display: flex;*/ /* align-items: center;*/ /* justify-content: center;*/ /* overflow: hidden;*/ /*}*/ /*.restore-item .preview img {*/ /* width: 100%;*/ /* height: 100%;*/ /* object-fit: cover;*/ /*}*/ /*.restore-item .preview .image-placeholder {*/ /* color: var(--contrast-50);*/ /* display: flex;*/ /* align-items: center;*/ /* justify-content: center;*/ /*}*/ /*!* Item info *!*/ /*.restore-item-info {*/ /* padding: 0.75rem;*/ /* flex: 1;*/ /* display: flex;*/ /* flex-direction: column;*/ /* gap: 0.25rem;*/ /*}*/ /*.restore-item-info .name {*/ /* font-size: var(--txt-small);*/ /* font-weight: 600;*/ /* color: var(--contrast);*/ /* overflow: hidden;*/ /* text-overflow: ellipsis;*/ /* white-space: nowrap;*/ /*}*/ /*.restore-item-info .restore-item-meta {*/ /* font-size: var(--tiny);*/ /* color: var(--contrast-70);*/ /*}*/ /*!* Checkbox controls *!*/ /*.restore-item-controls {*/ /* position: absolute;*/ /* top: 0.5rem;*/ /* right: 0.5rem;*/ /* z-index: 2;*/ /*}*/ /*.restore-checkbox {*/ /* width: 24px;*/ /* height: 24px;*/ /* cursor: pointer;*/ /* accent-color: var(--action-0);*/ /*}*/ /*!* Actions section *!*/ /*.restore-actions {*/ /* padding: 1.5rem 2rem;*/ /* background: var(--subtle);*/ /* display: flex;*/ /* flex-direction: column;*/ /* gap: 1rem;*/ /*}*/ /*!* Selection controls *!*/ /*.selection-controls {*/ /* display: flex;*/ /* gap: 0.5rem;*/ /* justify-content: flex-start;*/ /*}*/ /*.selection-controls button {*/ /* padding: 0.5rem 1rem;*/ /* font-size: var(--txt-small);*/ /* border: 1px solid var(--border);*/ /* background: var(--base);*/ /* color: var(--contrast);*/ /* border-radius: var(--radius);*/ /* cursor: pointer;*/ /* transition: all var(--trans-base);*/ /*}*/ /*.selection-controls button:hover {*/ /* background: var(--action-0);*/ /* color: white;*/ /* border-color: var(--action-0);*/ /*}*/ /*!* Action buttons *!*/ /*.action-buttons {*/ /* display: flex;*/ /* gap: 0.75rem;*/ /* justify-content: flex-end;*/ /* flex-wrap: wrap;*/ /*}*/ /*.action-buttons button {*/ /* padding: 0.75rem 1.5rem;*/ /* font-size: var(--base);*/ /* font-weight: 600;*/ /* border: none;*/ /* border-radius: var(--radius);*/ /* cursor: pointer;*/ /* transition: all var(--trans-base);*/ /* display: flex;*/ /* align-items: center;*/ /* gap: 0.5rem;*/ /*}*/ /*!* Restore button - primary action *!*/ /*.restore-selected {*/ /* background: var(--action-0);*/ /* color: white;*/ /*}*/ /*.restore-selected:hover {*/ /* background: var(--action-200);*/ /* transform: translateY(-1px);*/ /* box-shadow: 0 4px 12px rgba(var(--action-rgb), 0.3);*/ /*}*/ /*!* Scrap cache button - destructive action *!*/ /*.restart-uploads {*/ /* background: var(--danger);*/ /* color: white;*/ /*}*/ /*.restart-uploads:hover {*/ /* background: var(--danger-dark);*/ /* transform: translateY(-1px);*/ /*}*/ /*!* Dismiss button - secondary action *!*/ /*.dismiss-cache-check {*/ /* background: transparent;*/ /* color: var(--contrast);*/ /* border: 1px solid var(--border);*/ /*}*/ /*.dismiss-cache-check:hover {*/ /* background: var(--subtle);*/ /*}*/ /*!* Mobile responsive *!*/ /*@media (max-width: 768px) {*/ /* .restore-notification {*/ /* padding: 1rem;*/ /* }*/ /* .restore-content {*/ /* max-height: 95vh;*/ /* }*/ /* .restore-message {*/ /* padding: 1.5rem;*/ /* }*/ /* .restore-notification .restore-field {*/ /* padding: 1rem;*/ /* }*/ /* .item-grid.restore {*/ /* grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));*/ /* gap: 0.75rem;*/ /* }*/ /* .action-buttons {*/ /* flex-direction: column;*/ /* }*/ /* .action-buttons button {*/ /* width: 100%;*/ /* justify-content: center;*/ /* }*/ /*}*/ /*!* Animation *!*/ /*@keyframes fadeIn {*/ /* from {*/ /* opacity: 0;*/ /* }*/ /* to {*/ /* opacity: 1;*/ /* }*/ /*}*/ /*!* Scrollbar styling for restore field list *!*/ /*.restore-notification .restore-field::-webkit-scrollbar {*/ /* width: 8px;*/ /*}*/ /*.restore-notification .restore-field::-webkit-scrollbar-track {*/ /* background: var(--subtle);*/ /*}*/ /*.restore-notification .restore-field::-webkit-scrollbar-thumb {*/ /* background: var(--border);*/ /* border-radius: 4px;*/ /*}*/ /*.restore-notification .restore-field::-webkit-scrollbar-thumb:hover {*/ /* background: var(--contrast-50);*/ /*}*/ /*************************** FORMS */ /* Stepped Form Container */ form { --step-size: 2.5rem; } /* Progress Bar Styling */ .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: 0.5rem; } .form-progress .fill { height: 100%; background: linear-gradient(90deg, var(--action-0), var(--action-200)); width: 0%; transition: width 0.4s ease; border-radius: 3px; } .form-progress .step-text { font-size: var(--txt-small); font-weight: 600; color: var(--contrast-200); } /* Stepped Tabs Styling */ 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: transparent; border: none; padding: 0.5rem 1rem .5rem 3rem; z-index: 1; } /* Step Number Circle */ 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); } /* Pending Step */ form nav.tabs button.pending .step-number { background: var(--base-100); color: var(--contrast-200); } /* Current Step */ form nav.tabs button.current .step-number, form nav.tabs button.active .step-number { background: var(--action-0); color: var(--action-contrast); border-color: var(--action-200); } /* Completed Step */ 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 Buttons */ .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; } /* Error state for required fields */ .field input.error, .field textarea.error, .field select.error { border-color: var(--errorBack); } .error-message { color: var(--errorText); font-size: var(--txt-small); margin-top: 0.25rem; display: block; } /* Mobile responsiveness */ @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; } } /**** VALIDATION ******/ /* Field Input Wrapper - for positioning icon */ .field-input-wrapper { position: relative; display: flex; align-items: center; gap: 0.5rem; } .field-input-wrapper input, .field-input-wrapper textarea, .field-input-wrapper select { flex: 1; } /* Validation Icon */ .validation-icon { display: flex; align-items: center; justify-content: center; font-size: 1.25rem; animation: scaleIn 0.3s ease; --w: 1.25rem; } .validation-icon.error { color: var(--error); } .validation-icon.success { color: var(--success); } @keyframes scaleIn { from { transform: scale(0); opacity: 0; } to { transform: scale(1); opacity: 1; } } /* Validation Message */ .validation-message { color: var(--error-0); font-size: var(--txt-small); margin-top: 0.25rem; display: block; animation: slideDown 0.2s ease; } @keyframes slideDown { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: translateY(0); } } /* Error State */ .field.has-error input, .field.has-error textarea, .field.has-error select { border-color: var(--error); background-color: var(--errorBack) } .field.has-error input:focus, .field.has-error textarea:focus, .field.has-error select:focus { outline-color: var(--error); box-shadow: 0 0 0 3px rgba(var(--error-rgb), 0.2); } /* Success State */ .field.has-success input, .field.has-success textarea, .field.has-success select { border-color: var(--success); } /* Required Asterisk */ .field label .required { color: var(--error); margin-left: 0.25rem; } /************************************************************* Form Summary ************************************************************/ .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: 0.875rem; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 0.75rem; } .form-summary p { color: var(--text); margin: 0; } .repeater-summary, .group-summary { background: var(--base-100); padding: 1rem; border-radius: 4px; margin-top: 0.5rem; } .repeater-row { margin-bottom: 1rem; } .repeater-row:last-child { margin-bottom: 0; } .ql-toolbar button { min-height: 0; padding: .5rem; } .success-message { color: var(--success); background-color: var(--successBack); border: 1px solid var(--success); padding: 0.75rem 1rem; border-radius: var(--radius); margin-bottom: 1rem; display: flex; align-items: center; gap: 0.5rem; } .success-message .success-icon { width: 1.25rem; height: 1.25rem; flex-shrink: 0; } .success-box { background-color: var(--successBack); border: 2px solid var(--success); padding: 1.5rem; border-radius: var(--radius-outer); margin-bottom: 1rem; text-align: center; } .success-box h3 { color: var(--success); margin-bottom: 0.5rem; } .success-box p { margin: 0.5rem 0; } /* Form success state */ .form-success { opacity: 0.9; } /* Hide form fields after success (optional) */ .form-success .field:not(.form-success-message):not(.success-box) { display: none; } /* Keep submit button visible but disabled */ .form-success button[type="submit"] { opacity: 0.6; pointer-events: none; } /* Error states */ .field-error input, .field-error textarea, .field-error select { border-color: var(--error); } .error-message { color: var(--error); font-size: var(--txt-small); margin-top: 0.25rem; display: block; } .form-error { background-color: var(--errorBack); border: 1px solid var(--error); padding: 0.75rem; border-radius: var(--radius); margin-bottom: 1rem; } /* Success states */ .has-success input, .has-success textarea, .has-success select { border-color: var(--success); } .form-error { display: flex; align-items: center; gap: 0.5rem; } .form-error .error-icon { width: 1.25rem; height: 1.25rem; flex-shrink: 0; } .invite details { margin-bottom: 1.5rem; } /******************************* Tag Field */ /* Tag List Field */ .field.tag-list .tag-input-row { display: flex; gap: 0.5rem; align-items: flex-start; margin-bottom: 1rem; flex-wrap: wrap; } .field.tag-list .tag-input-row .field { flex: 1; min-width: 150px; margin: 0; } .field.tag-list .tag-input-row .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: 0.5rem; margin-bottom: 1rem; min-height: 2rem; } .field.tag-list .tag-item { background: var(--base-200); padding: 0.4rem 0.75rem; border-radius: 4px; display: inline-flex; align-items: center; gap: 0.5rem; font-size: 0.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 0.2s; box-shadow: none; } .field.tag-list .remove-tag:hover { transform: scale(1.2); } @media (max-width: 768px) { .field.tag-list .tag-input-row { flex-direction: column; align-items: stretch; } .field.tag-list .tag-input-row .field { min-width: 100%; } } .pendingChanges { position: fixed; bottom: var(--btn); right: var(--btn_); margin-right: 1rem; padding: 1rem; border-radius: var(--radius); background-color: rgba(var(--base-rgb),var(--op-6)); z-index: var(--z-6); width: 50vw; animation: fadeInSlideUp 0.5s ease-out forwards; } .pendingChanges button { min-height: 0; width: calc(50% - .7rem); padding: .35rem; } @keyframes fadeInSlideUp { from { opacity: 0; transform: translateY(20px); /* Start 20px below its final position */ } to { opacity: 1; transform: translateY(0); /* End at its normal position */ } }