/* Digital Buddy Core: functional styles that work with any theme.
   The Digital Buddy theme layers the full visual design on top. */

.dbp-form { --f-line: rgba(16,32,31,.14); --f-bg: #fff; --f-text: #10201F; --f-muted: #4B6260; --f-accent: #0B7F7B; --f-error: #C0263A; --f-ok: #0F7A4A; color: var(--f-text); }
.dbp-form__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem 1.1rem; }
.dbp-field { display: flex; flex-direction: column; gap: .4rem; min-width: 0; margin: 0; padding: 0; border: 0; }
.dbp-field--wide, .dbp-contact-pair { grid-column: 1 / -1; }
.dbp-field label, .dbp-field legend { font-size: .875rem; font-weight: 600; padding: 0; }
.dbp-optional { font-weight: 400; color: var(--f-muted); font-size: .8125rem; }
.dbp-form input[type=text], .dbp-form input[type=email], .dbp-form input[type=tel], .dbp-form input[type=url], .dbp-form select, .dbp-form textarea {
	width: 100%; min-height: 48px; padding: .75rem .9rem; font: inherit; font-size: 1rem; color: var(--f-text); background: var(--f-bg);
	border: 1px solid var(--f-line); border-radius: 12px; transition: border-color .18s, box-shadow .18s; box-sizing: border-box;
}
.dbp-form textarea { min-height: 130px; resize: vertical; }
.dbp-form input:focus-visible, .dbp-form select:focus-visible, .dbp-form textarea:focus-visible { outline: none; border-color: var(--f-accent); box-shadow: 0 0 0 4px rgba(11,127,123,.18); }
.dbp-form [aria-invalid=true] { border-color: var(--f-error); }
.dbp-field__help { margin: 0; font-size: .8125rem; color: var(--f-muted); }
.dbp-field__error { margin: 0; font-size: .8125rem; color: var(--f-error); font-weight: 600; }
.dbp-contact-pair__inner { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem 1.1rem; margin-top: .4rem; }
.dbp-contact-pair__inner .dbp-field label { font-weight: 500; }
.dbp-radios { display: flex; flex-wrap: wrap; gap: .5rem; }
.dbp-radio { position: relative; display: inline-flex; cursor: pointer; }
.dbp-radio input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.dbp-radio span { box-sizing: border-box; display: inline-flex; align-items: center; min-height: 44px; padding: .5rem 1.1rem; line-height: 1.2; border: 1px solid var(--f-line); border-radius: 999px; font-size: .9375rem; transition: all .18s; }
.dbp-radio input:checked + span { border-color: var(--f-accent); background: rgba(11,127,123,.08); color: var(--f-accent); font-weight: 600; }
.dbp-radio input:focus-visible + span { outline: 2px solid var(--f-accent); outline-offset: 2px; }
.dbp-check { display: flex; gap: .65rem; align-items: flex-start; font-size: .875rem; line-height: 1.5; font-weight: 400 !important; }
.dbp-check input { width: 20px; height: 20px; margin-top: .1rem; flex: none; accent-color: var(--f-accent); }
.dbp-consent { margin-top: 1rem; }
.dbp-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
.dbp-form__intro { margin: 0 0 1rem; font-size: .9375rem; color: var(--f-muted); }
.dbp-form__status { margin: 0 0 1rem; padding: .9rem 1rem; border-radius: 12px; font-size: .9375rem; font-weight: 500; }
.dbp-form__status.is-success { background: #E7F7EF; color: var(--f-ok); border: 1px solid #A6E3C4; }
.dbp-form__status.is-error { background: #FDECEE; color: var(--f-error); border: 1px solid #F5B7BF; }
.dbp-form__status:focus { outline: none; }
.dbp-form__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.25rem; margin-top: 1.25rem; }
.dbp-form__submit { cursor: pointer; border: 0; }
.dbp-form__submit[disabled] { opacity: .7; cursor: progress; }
.dbp-form__alt { font-size: .9375rem; }
.dbp-form.is-sent .dbp-form__grid, .dbp-form.is-sent .dbp-consent, .dbp-form.is-sent .dbp-form__actions, .dbp-form.is-sent .dbp-form__intro, .dbp-form.is-sent .cf-turnstile { display: none; }
@media (max-width: 600px) {
	.dbp-form__grid, .dbp-contact-pair__inner { grid-template-columns: 1fr; }
}

/* Floating WhatsApp button */
.dbp-wa-float { position: fixed; right: max(16px, env(safe-area-inset-right)); bottom: max(16px, env(safe-area-inset-bottom)); z-index: 90; display: inline-flex; align-items: center; gap: .55rem; min-height: 56px; padding: 0 1.15rem 0 1rem; border-radius: 999px; background: #128C4A; color: #fff !important; text-decoration: none !important; font-weight: 600; font-size: .9375rem; box-shadow: 0 10px 30px rgba(7,26,31,.28); transition: transform .2s, box-shadow .2s; }
.dbp-wa-float svg { width: 26px; height: 26px; }
.dbp-wa-float:hover { transform: translateY(-2px); box-shadow: 0 14px 34px rgba(7,26,31,.34); }
.dbp-wa-float:focus-visible { outline: 3px solid #F5A524; outline-offset: 3px; }
@media (max-width: 600px) {
	.dbp-wa-float { width: 56px; padding: 0; justify-content: center; }
	.dbp-wa-float span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
}

/* Portfolio grid */
.dbp-projects__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: 1.5rem; }
.dbp-project[hidden] { display: none; }
.dbp-filters { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1.75rem; }
.dbp-filter { min-height: 44px; padding: .5rem 1.1rem; border-radius: 999px; border: 1px solid rgba(16,32,31,.14); background: #fff; font: inherit; font-size: .9375rem; cursor: pointer; }
.dbp-filter[aria-pressed=true] { background: #10201F; color: #fff; border-color: #10201F; }

.dbp-cl { list-style: none; margin: 0; padding: 0; display: grid; gap: .6rem; }
.dbp-cl a { display: flex; align-items: center; gap: .75rem; text-decoration: none; }
.dbp-cl__icon svg { width: 22px; height: 22px; }
.dbp-cl__text { display: flex; flex-direction: column; line-height: 1.25; }
.dbp-cl__text small { font-size: .75rem; opacity: .75; }

.dbp-ssr-empty { padding: 1rem; border: 1px dashed #c3c4c7; font-size: 13px; }
