/*
Custom CSS for website theme
Version: 1.0
Description: Used to establish the look and feel for the custom website
Author: Full Spectrum Marketing
Author URL: http://www.fsm.agency

DEVELOPER NOTES:
- Use semantic variables in CSS (e.g. --color-text-link, --color-background-tertiary).
- Primitives and spectrum gradients live in variables.css.
- Typography tokens (--font-size-*, --font-weight-*, --line-height-*) are used where no
  semantic equivalent exists.
*/

:root {
    --font-family-sans: Inter, system-ui, sans-serif;
    --font-family-serif: "Roboto Serif", Georgia, serif;

    --font-weight-extra-light: 100;
    --font-weight-light: 300;
    --font-weight-regular: 400;
    --font-weight-medium: 500;
    --font-weight-bold: 700;

    --font-size-50: 12px;
    --font-size-100: 14px;
    --font-size-200: 16px;
    --font-size-300: 20px;
    --font-size-400: 24px;
    --font-size-500: 32px;
    --font-size-600: 40px;
    --font-size-700: 48px;
    --font-size-800: 64px;
    --font-size-900: 72px;

    --line-height-xs: 1.25;
    --line-height-sm: 1.5;

    --radius-sm: 4px;
    --radius-md: 8px;
    --radius-lg: 16px;

    --color-background-primary: var(--white);
    --color-background-secondary: var(--cream);
    --color-background-tertiary: var(--purple-tint);

    --color-text-default: var(--dark-gray);
    --color-text-heading: var(--dark-gray);
    --color-text-muted: #666666;
    --color-text-link: var(--blue-shade);
    --color-text-inverse: var(--white);

    --color-border-default: #e5e5e5;

    --color-action-primary-default: var(--fsm-blue);
    --color-action-primary-hover: var(--blue-shade);
    --color-action-primary-text: var(--white);

    --color-action-accent-default: var(--fsm-orange);
    --color-action-accent-hover: var(--orange-shade);
    --color-action-accent-text: var(--white);

    --primitive-neutral-gray-400: #9ca3af;
    --primitive-neutral-gray-600: #4b5563;
    --primitive-neutral-gray-700: #374151;
    --primitive-neutral-gray-800: #1f2937;
    --primitive-neutral-gray-900: #111827;

    --primitive-brand-primary-50: var(--blue-tint);
    --primitive-brand-primary-700: var(--blue-shade);
    --primitive-accent-secondary-50: var(--purple-tint);
    --primitive-accent-secondary-600: var(--purple-shade);

    --focus-ring-outer: #109cde;
    --focus-ring-inner: #ffffff;
    --border-focus: #109cde;

    --video-control-bg: rgba(0, 0, 0, 0.6);
    --video-control-bg-hover: rgba(0, 0, 0, 0.8);
    --video-control-shadow: rgba(0, 0, 0, 0.4);
    --video-control-shadow-hover: rgba(0, 0, 0, 0.6);
    --video-control-focus: var(--fsm-orange);
    --video-control-icon: var(--white);
}

/* START HEADER STYLES */
.site-header {
    border-bottom: 1px solid var(--color-border-default);
    background: var(--color-background-primary);
}

.site-header__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    max-width: 1200px;
    margin: 0 auto;
    padding: 1rem 1.5rem;
}

.site-logo {
    color: var(--color-text-heading);
    font-size: var(--font-size-300);
    font-weight: var(--font-weight-bold);
    line-height: var(--line-height-xs);
    text-decoration: none;
}

.site-logo:hover,
.site-logo:focus {
    color: var(--color-text-link);
}

.site-nav__list {
    display: flex;
    align-items: center;
    gap: 1.5rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.site-nav__list a {
    color: var(--color-text-default);
    font-size: var(--font-size-100);
    font-weight: var(--font-weight-medium);
    text-decoration: none;
}

.site-nav__list a:hover,
.site-nav__list a:focus {
    color: var(--color-text-link);
}

.site-nav__list .is-current a {
    color: var(--color-text-link);
    text-decoration: underline;
    text-underline-offset: 0.35em;
}

/* END HEADER */

/* START FOOTER STYLES */
.site-footer {
    border-top: 1px solid var(--color-border-default);
    background: var(--color-background-secondary);
}

.site-footer__text {
    max-width: 1200px;
    margin: 0 auto;
    padding: 1.25rem 1.5rem;
    color: var(--color-text-muted);
    font-size: var(--font-size-100);
    line-height: var(--line-height-sm);
    text-align: center;
}

/* END FOOTER */

/* START DEV LIBRARY */
body.fsm-dev-library-layout .sidebar,
body.fsm-dev-library-layout .widget-area,
body.post-type-archive-fsm_library_item .sidebar,
body.single-fsm_library_item .sidebar,
body.page-template-page-submit .sidebar {
    display: none;
}

body.fsm-dev-library-layout .site-main,
body.post-type-archive-fsm_library_item .site-main,
body.single-fsm_library_item .site-main,
body.page-template-page-submit .site-main {
    width: 100%;
}

.fsm-dev-library {
    max-width: 1200px;
    margin: 0 auto;
    padding: 2rem 1.5rem 4rem;
    color: var(--color-text-default);
}

.fsm-dev-library-header {
    margin-bottom: 2rem;
}

.fsm-dev-library-title {
    margin: 0 0 0.5rem;
    color: var(--color-text-heading);
    font-size: var(--font-size-600);
    line-height: var(--line-height-xs);
}

.fsm-dev-library-intro,
.fsm-dev-library-description,
.fsm-excerpt {
    color: var(--color-text-muted);
    line-height: var(--line-height-sm);
}

.fsm-dev-library-filters {
    margin-bottom: 2rem;
    display: grid;
    gap: 1rem;
}

.fsm-dev-library-search {
    display: flex;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.fsm-dev-library-search input[type="search"] {
    flex: 1 1 260px;
    min-height: 44px;
    padding: 0.65rem 0.9rem;
    border: 1px solid var(--color-border-default);
    border-radius: 6px;
    background: var(--color-background-primary);
    color: var(--color-text-default);
}

.fsm-dev-library-filter-row {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    align-items: flex-end;
}

.fsm-dev-library-filter {
    display: grid;
    gap: 0.35rem;
    min-width: 180px;
}

.fsm-dev-library-filter label {
    font-size: var(--font-size-100);
    font-weight: var(--font-weight-medium);
    color: var(--color-text-heading);
}

.fsm-dev-library-filter select {
    min-height: 44px;
    padding: 0.5rem 0.75rem;
    border: 1px solid var(--color-border-default);
    border-radius: 6px;
    background: var(--color-background-primary);
    color: var(--color-text-default);
}

.fsm-dev-library-reset {
    align-self: center;
    color: var(--color-text-link);
    text-decoration: none;
    font-size: var(--font-size-100);
}

.fsm-dev-library-reset:hover {
    text-decoration: underline;
}

.fsm-dev-library-btn,
.fsm-dev-library .fsm-dev-library-btn,
.fsm-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    min-height: 44px;
    padding: 0.65rem 1.1rem;
    border: none;
    border-radius: 6px;
    background: var(--color-action-primary-default);
    color: var(--color-action-primary-text);
    font-size: var(--font-size-100);
    font-weight: var(--font-weight-medium);
    text-decoration: none;
    cursor: pointer;
    transition: background-color 0.2s ease;
}

.fsm-dev-library-btn:hover,
.fsm-dev-library .fsm-dev-library-btn:hover,
.fsm-btn:hover {
    background: var(--color-action-primary-hover);
    color: var(--color-action-primary-text);
}

.fsm-dev-library-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1.5rem;
}

.fsm-card {
    display: flex;
    flex-direction: column;
    background: var(--color-background-primary);
    border: 1px solid var(--color-border-default);
    border-radius: 10px;
    overflow: hidden;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.fsm-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 12px 24px rgba(15, 23, 42, 0.08);
}

.fsm-card-media {
    position: relative;
    height: 180px;
    background: var(--color-background-secondary);
    display: flex;
    align-items: center;
    justify-content: center;
}

.fsm-card-media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.fsm-placeholder {
    color: var(--primitive-neutral-gray-400);
}

.fsm-placeholder .fa {
    font-size: 42px;
}

.fsm-badge,
.fsm-dev-library-badge {
    position: absolute;
    top: 12px;
    right: 12px;
    z-index: 1;
    display: inline-block;
    padding: 0.25rem 0.7rem;
    border-radius: 999px;
    background: rgba(15, 23, 42, 0.78);
    color: var(--color-text-inverse);
    font-size: 11px;
    font-weight: var(--font-weight-medium);
}

.fsm-dev-library-badge--hero {
    position: static;
    margin-bottom: 0.75rem;
}

.fsm-card-content {
    padding: 1rem 1rem 0.75rem;
    flex: 1 1 auto;
}

.fsm-title {
    margin: 0 0 0.75rem;
    font-size: var(--font-size-300);
    line-height: var(--line-height-xs);
}

.fsm-title a {
    color: var(--color-text-heading);
    text-decoration: none;
}

.fsm-title a:hover {
    color: var(--color-text-link);
}

.fsm-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin-bottom: 0.75rem;
}

.fsm-tag {
    display: inline-block;
    padding: 0.15rem 0.55rem;
    border-radius: 4px;
    background: var(--color-background-secondary);
    color: var(--color-text-muted);
    font-size: 11px;
}

.fsm-tag.tech_stack {
    background: var(--primitive-brand-primary-50);
    color: var(--primitive-brand-primary-700);
}

.fsm-tag.dependency {
    background: var(--primitive-accent-secondary-50);
    color: var(--primitive-accent-secondary-600);
}

.fsm-card-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.85rem 1rem;
    border-top: 1px solid var(--color-border-default);
    background: var(--color-background-secondary);
}

.fsm-link-icon {
    color: var(--color-text-muted);
    text-decoration: none;
    font-size: 1.1rem;
    line-height: 1;
}

.fsm-link-icon:hover {
    color: var(--color-text-link);
}

.fsm-dev-library-pagination {
    margin-top: 2rem;
}

.fsm-dev-library-pagination .prev,
.fsm-dev-library-pagination .next {
    gap: 0.35rem;
}

.fsm-dev-library-pagination .page-numbers {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 40px;
    min-height: 40px;
    margin: 0 0.2rem 0.4rem;
    padding: 0 0.75rem;
    border: 1px solid var(--color-border-default);
    border-radius: 6px;
    color: var(--color-text-default);
    text-decoration: none;
}

.fsm-dev-library-pagination .page-numbers.current {
    background: var(--color-action-primary-default);
    border-color: var(--color-action-primary-default);
    color: var(--color-action-primary-text);
}

.fsm-no-results {
    padding: 2.5rem;
    text-align: center;
    border: 1px dashed var(--color-border-default);
    border-radius: 10px;
    background: var(--color-background-secondary);
}

.fsm-dev-library-back {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    margin: 0 0 1.5rem;
    color: var(--color-text-link);
    text-decoration: none;
    font-weight: var(--font-weight-medium);
    font-size: var(--font-size-100);
}

.fsm-dev-library-back:hover {
    text-decoration: underline;
}

.fsm-dev-library-hero h1 {
    margin: 0 0 1rem;
    color: var(--color-text-heading);
    font-size: var(--font-size-600);
    line-height: var(--line-height-xs);
}

.fsm-dev-library-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem 1.5rem;
    align-items: center;
    margin-top: 1rem;
    color: var(--color-text-muted);
    font-size: var(--font-size-100);
}

.fsm-dev-library-meta strong {
    color: var(--color-text-heading);
}

.fsm-dev-library-divi-download {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 2rem;
    padding: 0.875rem 1.5rem;
    border-radius: 6px;
    background: var(--color-action-accent-default);
    color: var(--color-action-accent-text);
    text-decoration: none;
    font-size: var(--font-size-200);
    font-weight: var(--font-weight-medium);
}

.fsm-dev-library-divi-download:hover {
    background: var(--color-action-accent-hover);
    color: var(--color-action-accent-text);
}

.fsm-dev-library-btn--live,
.fsm-dev-library-btn--divi,
.fsm-dev-library-btn--download,
.fsm-dev-library-btn--resource {
    margin-top: 0.25rem;
}

.fsm-dev-library-screenshot {
    margin: 0 0 2rem;
    border-radius: 12px;
    overflow: hidden;
    border: 1px solid var(--color-border-default);
}

.fsm-dev-library-screenshot img {
    display: block;
    width: 100%;
    height: auto;
}

.fsm-dev-library-hero {
    margin-bottom: 2rem;
}

.fsm-dev-library-guide,
.fsm-guide-resource {
    margin-bottom: 2rem;
}

.fsm-dev-library-section-title {
    margin: 0 0 1rem;
    color: var(--color-text-heading);
    font-size: var(--font-size-400);
}

.fsm-guide-instruction {
    margin-bottom: 1.5rem;
    line-height: var(--line-height-sm);
}

.fsm-guide-instruction p:last-child {
    margin-bottom: 0;
}

.fsm-guide-code-block {
    margin-bottom: 1.5rem;
    border-radius: 10px;
    overflow: hidden;
    border: 1px solid var(--primitive-neutral-gray-700);
    background: var(--primitive-neutral-gray-900);
}

.fsm-guide-code-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.75rem 1rem;
    background: var(--primitive-neutral-gray-800);
    border-bottom: 1px solid var(--primitive-neutral-gray-700);
}

.fsm-guide-code-title {
    color: var(--color-text-inverse);
    font-size: var(--font-size-100);
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}

.fsm-code-copy {
    border: 1px solid var(--primitive-neutral-gray-600);
    border-radius: 6px;
    background: transparent;
    color: var(--color-text-inverse);
    padding: 0.35rem 0.75rem;
    font-size: 12px;
    cursor: pointer;
}

.fsm-code-copy:hover,
.fsm-code-copy.is-copied {
    background: var(--color-action-primary-default);
    border-color: var(--color-action-primary-default);
}

.fsm-guide-code-block pre {
    margin: 0;
    padding: 1rem;
    overflow-x: auto;
    background: transparent;
}

.fsm-guide-code-block code {
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
    font-size: 13px;
    line-height: 1.6;
    white-space: pre;
}

.fsm-dev-library-btn--download {
    color: var(--color-text-default);
    background: var(--color-background-secondary);
    border: 1px solid var(--color-border-default);
}

.fsm-dev-library-btn--download:hover {
    color: var(--color-text-default);
    background: var(--color-background-tertiary);
}

#fsm-submission-form {
    padding: 2rem;
    border: 1px dashed var(--color-border-default);
    border-radius: 10px;
    background: var(--color-background-secondary);
}

.fsm-dev-library-discussion {
    margin-top: 2.5rem;
    padding-top: 2rem;
    border-top: 1px solid var(--color-border-default);
}

.fsm-dev-library-discussion #comments {
    margin-top: 0.5rem;
}

.fsm-dev-library-discussion .comments-title {
    margin: 0 0 1.25rem;
    color: var(--color-text-heading);
    font-size: var(--font-size-300);
}

.fsm-dev-library-discussion .comment-list {
    list-style: none;
    margin: 0 0 2rem;
    padding: 0;
}

.fsm-dev-library-discussion .comment-list .children {
    list-style: none;
    margin: 1rem 0 0 1.25rem;
    padding: 0;
}

.fsm-dev-library-discussion .comment {
    margin-bottom: 1.25rem;
    padding: 1.25rem;
    border: 1px solid var(--color-border-default);
    border-radius: 10px;
    background: var(--color-background-secondary);
}

.fsm-dev-library-discussion .comment-author {
    margin-bottom: 0.35rem;
    color: var(--color-text-heading);
    font-weight: var(--font-weight-medium);
}

.fsm-dev-library-discussion .comment-author .avatar {
    margin-right: 0.5rem;
    border-radius: 50%;
    vertical-align: middle;
}

.fsm-dev-library-discussion .comment-meta {
    margin-bottom: 0.75rem;
    color: var(--color-text-muted);
    font-size: var(--font-size-100);
}

.fsm-dev-library-discussion .comment-meta a,
.fsm-dev-library-discussion .comment-reply-link,
.fsm-dev-library-discussion .must-log-in a,
.fsm-dev-library-discussion .logged-in-as a {
    color: var(--color-text-link);
}

.fsm-dev-library-discussion .comment-content {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem 0.75rem;
    line-height: var(--line-height-sm);
}

.fsm-dev-library-discussion .comment-content > p,
.fsm-dev-library-discussion .comment-content > .fsm-comment-inline-edit {
    flex: 0 0 100%;
}

.fsm-dev-library-discussion .comment-content p:last-of-type {
    margin-bottom: 0;
}

.fsm-dev-library-discussion .comment-respond {
    margin-top: 1.5rem;
}

.fsm-dev-library-discussion .comment-reply-title {
    margin: 0 0 1rem;
    color: var(--color-text-heading);
    font-size: var(--font-size-300);
}

.fsm-dev-library-discussion .must-log-in,
.fsm-dev-library-discussion .logged-in-as {
    margin-bottom: 1rem;
    color: var(--color-text-muted);
    font-size: var(--font-size-100);
}

.fsm-dev-library-discussion .comment-form label {
    display: block;
    margin-bottom: 0.35rem;
    color: var(--color-text-heading);
    font-size: var(--font-size-100);
    font-weight: var(--font-weight-medium);
}

.fsm-dev-library-discussion .comment-form textarea,
.fsm-dev-library-discussion .comment-form input[type="text"],
.fsm-dev-library-discussion .comment-form input[type="email"],
.fsm-dev-library-discussion .comment-form input[type="url"] {
    width: 100%;
    max-width: 100%;
    margin-bottom: 1rem;
    padding: 0.75rem 0.9rem;
    border: 1px solid var(--color-border-default);
    border-radius: 6px;
    background: var(--color-background-primary);
    color: var(--color-text-default);
    font-size: var(--font-size-200);
    line-height: var(--line-height-sm);
}

.fsm-dev-library-discussion .comment-form textarea {
    min-height: 140px;
    resize: vertical;
}

.fsm-dev-library-discussion .comment-form .form-submit {
    margin-bottom: 0;
}

.fsm-dev-library-discussion .comment-form .submit {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    padding: 0.65rem 1.1rem;
    border: none;
    border-radius: 6px;
    background: var(--color-action-primary-default);
    color: var(--color-action-primary-text);
    font-size: var(--font-size-100);
    font-weight: var(--font-weight-medium);
    cursor: pointer;
}

.fsm-dev-library-discussion .comment-form .submit:hover {
    background: var(--color-action-primary-hover);
}

.fsm-dev-library-discussion .no-comments {
    color: var(--color-text-muted);
    font-size: var(--font-size-100);
}

.fsm-dev-library-discussion .edit-link {
    display: none;
}

.fsm-dev-library-discussion .reply {
    display: inline-flex;
    align-items: center;
    margin: 0;
}

.fsm-dev-library-discussion .fsm-comment-author-actions {
    display: flex;
    align-items: center;
    flex: 1 1 auto;
    gap: 0.75rem;
    min-width: 0;
    margin: 0;
}

.fsm-dev-library-discussion .fsm-comment-edit,
.fsm-dev-library-discussion .fsm-comment-save,
.fsm-dev-library-discussion .fsm-comment-cancel,
.fsm-dev-library-discussion .comment-reply-link {
    display: inline-flex;
    align-items: center;
    padding: 0;
    border: none;
    background: transparent;
    color: var(--color-text-link);
    font-size: var(--font-size-100);
    font-weight: var(--font-weight-medium);
    text-decoration: none;
    cursor: pointer;
}

.fsm-dev-library-discussion .fsm-comment-edit:hover,
.fsm-dev-library-discussion .fsm-comment-save:hover,
.fsm-dev-library-discussion .fsm-comment-cancel:hover,
.fsm-dev-library-discussion .comment-reply-link:hover {
    text-decoration: underline;
}

.fsm-dev-library-discussion .fsm-comment-delete {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    margin-left: auto;
    padding: 0;
    border: none;
    border-radius: 4px;
    background: transparent;
    color: var(--fsm-red);
    font-size: 0.95rem;
    line-height: 1;
    cursor: pointer;
}

.fsm-dev-library-discussion .fsm-comment-delete:hover {
    background: var(--red-tint);
    color: var(--red-shade);
    text-decoration: none;
}

.fsm-dev-library-discussion .fsm-comment-inline-edit {
    margin-bottom: 0.75rem;
}

.fsm-dev-library-discussion .fsm-comment-edit-textarea {
    display: block;
    width: 100%;
    min-height: 120px;
    margin-bottom: 0.75rem;
    padding: 0.75rem 0.9rem;
    border: 1px solid var(--color-border-default);
    border-radius: 6px;
    background: var(--color-background-primary);
    color: var(--color-text-default);
    font-size: var(--font-size-200);
    line-height: var(--line-height-sm);
    resize: vertical;
}

.fsm-dev-library-discussion .fsm-comment-edit-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: center;
}

.fsm-dev-library-discussion .fsm-comment-save {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 40px;
    padding: 0.5rem 1rem;
    border: none;
    border-radius: 6px;
    background: var(--color-action-primary-default);
    color: var(--color-action-primary-text);
    font-size: var(--font-size-100);
    font-weight: var(--font-weight-medium);
    text-decoration: none;
    cursor: pointer;
}

.fsm-dev-library-discussion .fsm-comment-save:hover {
    background: var(--color-action-primary-hover);
    color: var(--color-action-primary-text);
    text-decoration: none;
}

.fsm-dev-library-discussion .fsm-comment-cancel {
    min-height: 40px;
    padding: 0.5rem 0.25rem;
}

.fsm-dev-library-discussion .fsm-comment-save:disabled,
.fsm-dev-library-discussion .fsm-comment-delete:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

@media (max-width: 980px) {
    .fsm-dev-library-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 640px) {
    .fsm-dev-library {
        padding-left: 1rem;
        padding-right: 1rem;
    }

    .fsm-dev-library-grid {
        grid-template-columns: 1fr;
    }

    .fsm-dev-library-search,
    .fsm-dev-library-filter-row,
    .fsm-dev-library-meta {
        flex-direction: column;
        align-items: stretch;
    }

    .fsm-dev-library-filter {
        width: 100%;
    }

    .fsm-dev-library-discussion .comment-list .children {
        margin-left: 0.75rem;
    }
}

/* END DEV LIBRARY */
