/*
 * Third-party plugin harmonization (child-theme layer).
 * Plugins: Contact Form 7, Highlighting Code Block, Nice Gallery, BEAF.
 * Nettoge Core modules: modules/parts/nettoge-core-bridge-nettoge.css
 * HCB syntax colors: --hcb-syntax-* tokens defined in main.css (light + dark semantic blocks).
 */

/* =================================================================
   Contact Form 7
   ================================================================= */

.wpcf7 form {
    color: var(--color_text);
    font-family: var(--font-body);
}

.wpcf7 form label {
    color: var(--color_text);
    display: block;
    font-size: 0.82rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    margin-bottom: 0.35rem;
    text-transform: uppercase;
}

.wpcf7 form p {
    margin: 0 0 1.1rem;
}

.wpcf7 form input[type="text"],
.wpcf7 form input[type="email"],
.wpcf7 form input[type="tel"],
.wpcf7 form input[type="url"],
.wpcf7 form input[type="number"],
.wpcf7 form input[type="date"],
.wpcf7 form input[type="file"],
.wpcf7 form select,
.wpcf7 form textarea {
    background: var(--surface-comment-input, var(--surface-widget));
    border: 1px solid var(--border-form-input);
    border-radius: 2px;
    box-sizing: border-box;
    color: var(--color_text);
    font-family: var(--font-body);
    font-size: 0.95rem;
    line-height: 1.5;
    max-width: 100%;
    padding: 0.65rem 0.75rem;
    transition: border-color 0.15s ease, background-color 0.15s ease;
    width: 100%;
}

.wpcf7 form input::placeholder,
.wpcf7 form textarea::placeholder {
    color: var(--text-form-placeholder);
}

.wpcf7 form input[type="text"]:focus,
.wpcf7 form input[type="email"]:focus,
.wpcf7 form input[type="tel"]:focus,
.wpcf7 form input[type="url"]:focus,
.wpcf7 form input[type="number"]:focus,
.wpcf7 form input[type="date"]:focus,
.wpcf7 form select:focus,
.wpcf7 form textarea:focus {
    border-color: var(--color_main, var(--color_link));
    outline: none;
}

.wpcf7 form input:disabled,
.wpcf7 form select:disabled,
.wpcf7 form textarea:disabled {
    background: var(--surface-form-disabled);
    border-color: var(--border-form-disabled);
    color: var(--text-form-disabled);
}

.wpcf7-not-valid-tip {
    color: var(--text-form-error);
    font-size: 0.82rem;
    margin-top: 0.35rem;
}

.wpcf7 form .wpcf7-response-output {
    background: var(--surface-widget);
    border: 1px solid var(--border-form-input);
    border-radius: 2px;
    color: var(--color_text);
    margin: 1.5rem 0 0;
    padding: 0.75rem 1rem;
}

.wpcf7 form.sent .wpcf7-response-output {
    border-color: var(--color-success);
    color: var(--color_text);
}

.wpcf7 form.failed .wpcf7-response-output,
.wpcf7 form.aborted .wpcf7-response-output {
    background: var(--surface-form-error);
    border-color: var(--border-form-error);
    color: var(--text-form-error);
}

.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.unaccepted .wpcf7-response-output,
.wpcf7 form.spam .wpcf7-response-output,
.wpcf7 form.payment-required .wpcf7-response-output {
    border-color: var(--color-warn, #fbbf24);
}

.wpcf7 form.init .wpcf7-response-output,
.wpcf7 form.resetting .wpcf7-response-output,
.wpcf7 form.submitting .wpcf7-response-output {
    display: none;
}

.wpcf7 form input[type="submit"],
.wpcf7 form button[type="submit"],
.wpcf7 input.wpcf7-submit {
    appearance: none;
    background: var(--color_main, var(--brand-terracotta));
    border: 2px solid var(--color_main, var(--brand-terracotta));
    border-radius: 2px;
    color: var(--text-on-accent, #fff);
    cursor: pointer;
    display: inline-block;
    font-family: var(--font-body);
    font-size: 0.8rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    padding: 0.75rem 1.5rem;
    text-transform: uppercase;
    transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

.wpcf7 form input[type="submit"]:hover,
.wpcf7 form button[type="submit"]:hover,
.wpcf7 input.wpcf7-submit:hover {
    background: var(--color_main_dark, var(--color_main));
    border-color: var(--color_main_dark, var(--color_main));
    color: var(--text-on-accent, #fff);
}

.wpcf7 form input[type="submit"]:focus-visible,
.wpcf7 form button[type="submit"]:focus-visible,
.wpcf7 input.wpcf7-submit:focus-visible {
    outline: 2px solid var(--color_link);
    outline-offset: 2px;
}

.wpcf7-list-item {
    color: var(--color_text);
    margin: 0 1rem 0 0;
}

.wpcf7-list-item-label {
    font-size: 0.92rem;
    letter-spacing: normal;
    text-transform: none;
}

.wpcf7-spinner {
    background-color: var(--color_text);
    opacity: 0.35;
}

.wpcf7-spinner::before {
    background-color: var(--nettoge-page-bg);
}

.use-floating-validation-tip .wpcf7-not-valid-tip {
    background: var(--surface-widget);
    border: 1px solid var(--border-form-error);
    color: var(--text-form-error);
}

/* =================================================================
   Highlighting Code Block — theme token bridge (structure stays in plugin CSS)
   ================================================================= */

.hcb_wrap.hcb_wrap {
    font-family: var(--font-mono, var(--hcb--ff));
}

.hcb_wrap.hcb_wrap > pre,
.hcb_wrap.hcb_wrap > pre > code {
    background: var(--hcb--bgc);
    color: var(--hcb--c);
    text-shadow: none !important;
}

.hcb_wrap.hcb_wrap .token {
    text-shadow: none !important;
}

/* Phase 16 — HCB Prism tokens via theme vars (no [data-nettoge-theme] in modules) */
.hcb_wrap.hcb_wrap :is(.token.cdata, .token.comment, .token.doctype, .token.prolog) {
    color: var(--hcb-syntax-comment, var(--syntax-comment));
}

.hcb_wrap.hcb_wrap .token.punctuation {
    color: var(--hcb-syntax-punctuation, var(--syntax-punctuation));
}

.hcb_wrap.hcb_wrap :is(.token.constant, .token.deleted, .token.important, .token.property, .token.symbol, .token.tag) {
    color: var(--hcb-syntax-property, var(--syntax-property));
}

.hcb_wrap.hcb_wrap :is(.token.boolean, .token.number) {
    color: var(--hcb-syntax-number, var(--syntax-keyword));
}

.hcb_wrap.hcb_wrap :is(.token.attr-name, .token.builtin, .token.char, .token.class-name, .token.inserted, .token.selector) {
    color: var(--hcb-syntax-selector, var(--syntax-string));
}

.hcb_wrap.hcb_wrap :is(.language-css .token.string, .style .token.string, .token.entity, .token.operator, .token.url, .token.variable) {
    color: var(--hcb-syntax-neutral, var(--syntax-punctuation));
}

.hcb_wrap.hcb_wrap :is(.token.atrule, .token.attr-value, .token.string) {
    color: var(--hcb-syntax-string, var(--syntax-string));
}

.hcb_wrap.hcb_wrap :is(.token.function, .token.keyword.def) {
    color: var(--hcb-syntax-function, var(--syntax-function));
}

.hcb_wrap.hcb_wrap :is(.token.keyword, .token.operator) {
    color: var(--hcb-syntax-keyword, var(--syntax-keyword));
}

.hcb_wrap.hcb_wrap :is(.token.keyword.this, .token.regex) {
    color: var(--hcb-syntax-regex, var(--syntax-property));
}

.hcb_wrap.hcb_wrap .token.delimiter:not(.symbol) {
    color: var(--hcb-syntax-delimiter, var(--syntax-function));
}

.hcb_wrap > pre:before {
    background-color: var(--hcb--data-label--bgc);
    color: var(--hcb--data-label--c);
}

.hcb-clipboard {
    background-color: color-mix(in srgb, var(--surface-widget, #fafafa) 80%, transparent);
    box-shadow: 0 1px 2px color-mix(in srgb, var(--color_text) 18%, transparent);
    color: var(--color_text);
}

/* =================================================================
   Nice Gallery
   ================================================================= */

.nice-gallery {
    color: var(--color_text);
    font-family: var(--font-body);
}

.nice-gallery .ng-subtitle {
    color: var(--text-comment-muted);
}

.nice-gallery .ng-tags li {
    background-color: var(--surface-widget);
    border-color: var(--border-form-input);
    color: var(--color_text);
}

.nice-gallery .ng-frame,
.nice-gallery .ng-view {
    background-color: var(--surface-widget);
}

.nice-gallery .ng-side-desc .ng-desc {
    background-color: var(--surface-blogcard-soft);
    color: var(--color_text);
}

.nice-gallery .ng-text {
    color: var(--text-comment-muted);
}

.nice-gallery .ng-thumbs li .ng-border {
    border-color: var(--color_main, var(--color_link));
}

.nice-gallery .ng-lb-stage {
    background-color: var(--surface-widget);
    border: 1px solid var(--border-form-input);
}

.nice-gallery .ng-lb-background {
    background-color: var(--nettoge-page-bg);
    opacity: 0.72;
}

/* =================================================================
   BEAF Before / After Gallery (twentytwenty)
   ================================================================= */

.bafg-slider-wrapper .design-1 .twentytwenty-before-label::before,
.bafg-slider-wrapper .design-1 .twentytwenty-after-label::before,
.twentytwenty-horizontal .design-1 .twentytwenty-before-label::before,
.twentytwenty-horizontal .design-1 .twentytwenty-after-label::before {
    background: var(--surface-widget);
    color: var(--color_text);
}

.bafg-slider-wrapper .design-2 .twentytwenty-before-label::before,
.bafg-slider-wrapper .design-2 .twentytwenty-after-label::before {
    color: var(--text-on-accent, #fff);
}

.bafg-slider-wrapper .twentytwenty-overlay {
    background: color-mix(in srgb, var(--nettoge-page-bg) 8%, transparent);
}

.bafg-slider-wrapper .twentytwenty-handle {
    border-color: var(--color_text);
}

.bafg-slider-wrapper .twentytwenty-left-arrow,
.bafg-slider-wrapper .twentytwenty-right-arrow,
.bafg-slider-wrapper .twentytwenty-up-arrow,
.bafg-slider-wrapper .twentytwenty-down-arrow {
    border-top-color: var(--color_text);
    border-bottom-color: var(--color_text);
    border-left-color: var(--color_text);
    border-right-color: var(--color_text);
}
