/* WPXT Core – front end. Colours/fonts follow the Elementor global variables when present. */
:root{
	--wpxt-accent: var(--accent, #117ac9);
	--wpxt-ink: var(--ink, #0e1116);
	--wpxt-paper: var(--paper, #f6f5f1);
	--wpxt-muted: var(--muted, #5d6470);
	--wpxt-line: rgba(14,17,22,.12);
	--wpxt-radius: 12px;
	--wpxt-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}

.wpxt-label{font-family:var(--wpxt-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--wpxt-muted)}

/* ---------- Browser frame ---------- */
.wpxt-browser{margin:0;border:1px solid var(--wpxt-line);border-radius:var(--wpxt-radius);overflow:hidden;background:#fff;box-shadow:0 1px 0 rgba(14,17,22,.04),0 24px 48px -28px rgba(14,17,22,.28)}
.wpxt-browser__bar{display:flex;align-items:center;gap:6px;height:34px;padding:0 14px;border-bottom:1px solid var(--wpxt-line);background:#fbfbfa}
.wpxt-browser__bar i{width:9px;height:9px;border-radius:50%;background:#d9d9d6;flex:none}
.wpxt-browser__bar span{flex:1;text-align:center;margin-right:42px;font-family:var(--wpxt-mono);font-size:11px;color:var(--wpxt-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wpxt-browser__link{display:block;line-height:0}
.wpxt-browser__img{display:block;width:100%;height:auto}

/* Full-page frame: fixed window, scrolls through the page on hover */
.wpxt-browser--scroll .wpxt-browser__link{position:relative;aspect-ratio:16/11;overflow:hidden}
.wpxt-browser--scroll .wpxt-browser__img{position:absolute;inset:0 0 auto 0;transform:translateY(0);transition:transform var(--wpxt-scroll-time,6s) cubic-bezier(.45,.05,.35,1)}
.wpxt-browser--scroll:hover .wpxt-browser__img,.wpxt-browser--scroll:focus-within .wpxt-browser__img{transform:translateY(calc(var(--wpxt-shift,0px) * -1))}
@media (hover:none){.wpxt-browser--scroll .wpxt-browser__link{overflow-y:auto;-webkit-overflow-scrolling:touch}.wpxt-browser--scroll .wpxt-browser__img{position:static}}

/* ---------- Phone frame ---------- */
.wpxt-phone{margin:0;display:flex;flex-direction:column;align-items:center;gap:14px}
.wpxt-phone a{display:block;width:min(100%,300px);aspect-ratio:390/844;border:10px solid var(--wpxt-ink);border-radius:42px;overflow:hidden;background:var(--wpxt-ink);box-shadow:0 30px 60px -30px rgba(14,17,22,.45)}
.wpxt-phone__img{display:block;width:100%;height:100%;object-fit:cover;object-position:top}
.wpxt-phone figcaption{font-family:var(--wpxt-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--wpxt-muted)}

/* ---------- Screens section (appended to project content) ---------- */
.wpxt-screens{display:grid;gap:clamp(28px,4vw,56px);margin:clamp(40px,6vw,96px) 0}
.wpxt-screens__duo{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:clamp(24px,4vw,64px);align-items:center}
.wpxt-screens__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(20px,3vw,40px)}
.wpxt-screens__grid > .wpxt-browser:first-child:nth-last-child(odd){grid-column:1/-1}
@media (max-width:860px){
	.wpxt-screens__duo{grid-template-columns:1fr}
	.wpxt-screens__grid{grid-template-columns:1fr}
}

/* ---------- Meta list ---------- */
.wpxt-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:20px;margin:0}
.wpxt-meta dt{font-family:var(--wpxt-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--wpxt-muted);margin:0 0 6px}
.wpxt-meta dd{margin:0;color:var(--wpxt-ink)}

/* ---------- Next project ---------- */
.wpxt-next{border-top:1px solid var(--wpxt-line);margin-top:clamp(40px,6vw,96px)}
.wpxt-next a{display:grid;grid-template-columns:1fr auto;align-items:end;gap:6px 24px;padding:clamp(28px,4vw,56px) 0;color:var(--wpxt-ink);text-decoration:none}
.wpxt-next .wpxt-label{grid-column:1/-1}
.wpxt-next__title{font-size:clamp(28px,4.5vw,64px);line-height:1.05;font-weight:600;letter-spacing:-.02em}
.wpxt-next__arrow{font-size:clamp(28px,4.5vw,64px);line-height:1;color:var(--wpxt-accent);transition:transform .35s ease}
.wpxt-next a:hover .wpxt-next__arrow{transform:translateX(10px)}

/* ---------- Project grid shortcode ---------- */
.wpxt-filter{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 clamp(24px,3vw,40px)}
.wpxt-filter button{font-family:var(--wpxt-mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;padding:9px 14px;border:1px solid var(--wpxt-line);border-radius:999px;background:transparent;color:var(--wpxt-ink);cursor:pointer;transition:background .2s,color .2s,border-color .2s}
.wpxt-filter button:hover{border-color:var(--wpxt-accent);color:var(--wpxt-accent);background:rgba(17,122,201,.06)}
.wpxt-filter button.is-active{background:var(--wpxt-ink);border-color:var(--wpxt-ink);color:#fff}
.wpxt-filter button.is-active:hover{background:var(--wpxt-ink);border-color:var(--wpxt-ink);color:#fff}
.wpxt-projects__grid{display:grid;grid-template-columns:repeat(var(--wpxt-cols,2),minmax(0,1fr));gap:clamp(28px,4vw,56px) clamp(20px,3vw,40px)}
@media (max-width:760px){.wpxt-projects__grid{grid-template-columns:1fr}}
.wpxt-card[hidden]{display:none}
.wpxt-card__link{display:block;color:inherit;text-decoration:none}
.wpxt-card__media{border:1px solid var(--wpxt-line);border-radius:var(--wpxt-radius);overflow:hidden;background:#fff;transition:transform .45s cubic-bezier(.2,.7,.2,1),box-shadow .45s}
.wpxt-card__media img{display:block;width:100%;aspect-ratio:16/10;height:auto;object-fit:cover;object-position:top;transition:transform 1.2s cubic-bezier(.2,.7,.2,1)}
.wpxt-card__link:hover .wpxt-card__media{transform:translateY(-4px);box-shadow:0 28px 50px -30px rgba(14,17,22,.35)}
.wpxt-card__link:hover .wpxt-card__media img{transform:scale(1.025)}
.wpxt-card__body{padding:16px 2px 0}
.wpxt-card__title{margin:0 0 6px;font-size:clamp(18px,1.6vw,22px);font-weight:600;letter-spacing:-.01em;color:var(--wpxt-ink)}
.wpxt-card__meta{display:flex;justify-content:space-between;gap:12px;margin:0;font-family:var(--wpxt-mono);font-size:12px;letter-spacing:.04em;color:var(--wpxt-muted)}

/* ---------- Logo ---------- */
.wpxt-logo{display:inline-block;line-height:0;color:var(--wpxt-logo-color,var(--wpxt-accent));width:220px;max-width:100%}
.wpxt-logo__svg{display:block;width:100%;height:auto;overflow:visible}
/* draw-on (header / default) */
.wpxt-logo--animate .wpxt-logo__br{animation:wpxt-br .95s cubic-bezier(.75,0,.2,1) both}
.wpxt-logo--animate .wpxt-logo__br--l{--wpxt-br-from:215px}
.wpxt-logo--animate .wpxt-logo__br--r{--wpxt-br-from:-215px}
.wpxt-logo--animate .wpxt-logo__l{stroke-dasharray:1;stroke-dashoffset:1;animation:wpxt-draw .6s cubic-bezier(.6,0,.2,1) forwards}
.wpxt-logo--animate .wpxt-logo__l--w1{animation-delay:.55s}
.wpxt-logo--animate .wpxt-logo__l--w2{animation-delay:.63s}
.wpxt-logo--animate .wpxt-logo__l--p{animation-delay:.72s}
.wpxt-logo--animate .wpxt-logo__l--x2{animation-delay:.8s}
.wpxt-logo--animate .wpxt-logo__l--x3{animation-delay:.84s}
.wpxt-logo--animate .wpxt-logo__l--x1{animation-delay:.86s}
.wpxt-logo--animate .wpxt-logo__l--t1{animation-delay:.94s}
.wpxt-logo--animate .wpxt-logo__l--t2{animation-delay:1.02s}
.wpxt-logo--animate .wpxt-logo__caret{display:none}
@keyframes wpxt-br{0%{transform:translateX(var(--wpxt-br-from));opacity:0}15%{opacity:1}100%{transform:translateX(0);opacity:1}}
@keyframes wpxt-draw{to{stroke-dashoffset:0}}
/* typewriter: same bracket open as draw (from one piece), then letters type */
.wpxt-logo--type .wpxt-logo__br{opacity:0;transform:translateX(var(--wpxt-br-from,0))}
.wpxt-logo--type .wpxt-logo__br--l{--wpxt-br-from:215px}
.wpxt-logo--type .wpxt-logo__br--r{--wpxt-br-from:-215px}
.wpxt-logo--type.is-open .wpxt-logo__br{animation:wpxt-br .95s cubic-bezier(.75,0,.2,1) both}
.wpxt-logo--type .wpxt-logo__letter{opacity:0}
.wpxt-logo--type .wpxt-logo__letter.is-on{opacity:1}
.wpxt-logo--type .wpxt-logo__caret{opacity:0}
.wpxt-logo--type.is-typing .wpxt-logo__caret{opacity:1;animation:wpxt-caret-blink .55s step-end infinite}
.wpxt-logo--type.is-done .wpxt-logo__caret{opacity:0;animation:none}
@keyframes wpxt-caret-blink{50%{opacity:0}}
@media (prefers-reduced-motion:reduce){
	.wpxt-logo--animate .wpxt-logo__br,.wpxt-logo--animate .wpxt-logo__l{animation:none!important;stroke-dashoffset:0;opacity:1;transform:none}
	.wpxt-logo--type .wpxt-logo__br,.wpxt-logo--type .wpxt-logo__letter{animation:none!important;opacity:1;transform:none}
	.wpxt-logo--type .wpxt-logo__caret{display:none}
	.wpxt-browser--scroll .wpxt-browser__img{transition:none}
}

/* ---------- Language switch ---------- */
.wpxt-lang{display:inline-flex;align-items:center;gap:6px;font-family:var(--wpxt-mono);font-size:12px;letter-spacing:.08em}
.wpxt-lang a{color:inherit;opacity:.55;text-decoration:none;transition:opacity .2s}
.wpxt-lang a:hover{opacity:1}
.wpxt-lang .is-current{font-weight:600}
.wpxt-lang i{font-style:normal;opacity:.3}

/* ---------- Service icons ---------- */
.wpxt-icon,.wpxt-icon img,img.wpxt-icon{display:block;width:56px;height:56px;min-width:56px;min-height:56px;color:var(--wpxt-accent,#117ac9);line-height:0;margin:0 0 14px;opacity:1;overflow:visible;border:0;max-width:none}
.wpxt-icon svg{display:block;width:100%;height:100%;overflow:visible;max-width:none}
@media (min-width:900px){.wpxt-icon,.wpxt-icon img,img.wpxt-icon{width:72px;height:72px;min-width:72px;min-height:72px;margin:0 0 16px}}

/* ---------- Fluent Forms (site style) ---------- */
.fluentform,.frm-fluent-form{
	--ff-ink:var(--wpxt-ink);
	--ff-paper:var(--wpxt-paper);
	--ff-muted:var(--wpxt-muted);
	--ff-line:var(--wpxt-line);
	--ff-accent:var(--wpxt-accent);
	font-family:Manrope,system-ui,sans-serif;
	color:var(--ff-ink);
	background:transparent;
}
.frm-fluent-form .ff-el-group{margin-bottom:1.15rem}
.frm-fluent-form .ff-el-input--label label,
.frm-fluent-form .ff-el-input--label{
	font-family:var(--wpxt-mono);
	font-size:11px;
	font-weight:500;
	letter-spacing:.08em;
	text-transform:uppercase;
	color:var(--ff-muted);
	margin:0 0 .45rem;
}
.frm-fluent-form .ff-el-form-control,
.frm-fluent-form input[type=text],
.frm-fluent-form input[type=email],
.frm-fluent-form input[type=tel],
.frm-fluent-form input[type=url],
.frm-fluent-form input[type=number],
.frm-fluent-form select,
.frm-fluent-form textarea{
	width:100%;
	appearance:none;
	-webkit-appearance:none;
	background:rgba(255,255,255,.45);
	border:1px solid var(--ff-line);
	border-radius:10px;
	color:var(--ff-ink);
	font-family:Manrope,system-ui,sans-serif;
	font-size:16px;
	line-height:1.45;
	padding:.85rem 1rem;
	box-shadow:none;
	transition:border-color .2s ease, background .2s ease, box-shadow .2s ease;
}
.frm-fluent-form textarea{min-height:140px;resize:vertical}
.frm-fluent-form .ff-el-form-control:hover,
.frm-fluent-form input:hover,
.frm-fluent-form select:hover,
.frm-fluent-form textarea:hover{
	border-color:rgba(14,17,22,.28);
	background:rgba(255,255,255,.7);
}
.frm-fluent-form .ff-el-form-control:focus,
.frm-fluent-form input:focus,
.frm-fluent-form select:focus,
.frm-fluent-form textarea:focus{
	outline:0;
	border-color:var(--ff-accent);
	background:#fff;
	box-shadow:0 0 0 3px rgba(17,122,201,.18);
}
.frm-fluent-form .ff-el-form-control::placeholder,
.frm-fluent-form input::placeholder,
.frm-fluent-form textarea::placeholder{color:var(--ff-muted);opacity:.7}
.frm-fluent-form select{
	background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%23646a73' stroke-width='1.5' d='M1 1.5l5 5 5-5'/%3E%3C/svg%3E");
	background-repeat:no-repeat;
	background-position:right 1rem center;
	padding-right:2.5rem;
}
.frm-fluent-form .ff-el-form-check{display:flex;align-items:flex-start;gap:.65rem;margin:0}
.frm-fluent-form .ff-el-form-check-input{
	appearance:none;-webkit-appearance:none;
	width:18px;height:18px;margin:.15rem 0 0;flex:none;
	border:1.5px solid rgba(14,17,22,.35);
	border-radius:4px;background:rgba(255,255,255,.55);
	cursor:pointer;transition:border-color .15s,background .15s;
}
.frm-fluent-form .ff-el-form-check-input:checked{
	background:var(--ff-ink);
	border-color:var(--ff-ink);
	background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='10' viewBox='0 0 12 10'%3E%3Cpath fill='none' stroke='%23fff' stroke-width='1.75' d='M1 5l3.5 3.5L11 1'/%3E%3C/svg%3E");
	background-repeat:no-repeat;background-position:center;
}
.frm-fluent-form .ff-el-form-check-label,
.frm-fluent-form .ff-el-form-check label{
	font-size:14px;line-height:1.45;color:var(--ff-ink);font-weight:400;text-transform:none;letter-spacing:0;font-family:Manrope,system-ui,sans-serif;
}
.frm-fluent-form .ff-btn-submit,
.frm-fluent-form button.ff-btn-submit,
.frm-fluent-form .ff-btn.ff-btn-submit{
	appearance:none;-webkit-appearance:none;
	display:inline-flex;align-items:center;justify-content:center;
	min-height:48px;padding:.85rem 1.6rem;
	border:1px solid var(--ff-ink)!important;
	border-radius:999px!important;
	background:var(--ff-ink)!important;
	color:#fff!important;
	font-family:Manrope,system-ui,sans-serif;
	font-size:15px;font-weight:600;letter-spacing:.01em;
	line-height:1.2;cursor:pointer;
	box-shadow:none!important;
	transition:background .2s ease,border-color .2s ease,transform .2s ease;
}
.frm-fluent-form .ff-btn-submit:hover,
.frm-fluent-form button.ff-btn-submit:hover{
	background:var(--ff-accent)!important;
	border-color:var(--ff-accent)!important;
	color:#fff!important;
	transform:translateY(-1px);
}
.frm-fluent-form .ff-btn-submit:focus-visible{
	outline:0;box-shadow:0 0 0 3px rgba(17,122,201,.25)!important;
}
.frm-fluent-form .ff-el-is-error .ff-el-form-control,
.frm-fluent-form .ff-el-is-error input,
.frm-fluent-form .ff-el-is-error textarea,
.frm-fluent-form .ff-el-is-error select{border-color:#c0392b}
.frm-fluent-form .error,.frm-fluent-form .ff-error-message,.frm-fluent-form .text-danger{
	font-size:12px;color:#c0392b;margin-top:.35rem;
}
.frm-fluent-form .ff-message-success{
	border:1px solid var(--ff-line);
	border-radius:var(--wpxt-radius);
	background:rgba(255,255,255,.55);
	padding:1.25rem 1.4rem;
	color:var(--ff-ink);
}
.frm-fluent-form .ff-el-help-message{font-size:13px;color:var(--ff-muted);margin-top:.35rem}
