/* DigitalPal — reusable components */
.btn{font-family:var(--font-body);font-weight:700;border-radius:14px;padding:.8rem 1.4rem;transition:all var(--transition);border:1px solid transparent;letter-spacing:-.01em;display:inline-flex;align-items:center;justify-content:center;gap:.55rem;white-space:nowrap}
.btn:focus-visible{box-shadow:0 0 0 4px rgba(21,101,192,.16)}
.btn-inline-auto{display:inline-flex;align-items:center;justify-content:center}
.btn-icon-auto{display:grid;place-items:center;padding:0}
.btn-dp-primary{background:linear-gradient(135deg,#4CC9C5 0%, #2D8EC9 100%);color:#fff;box-shadow:0 16px 30px -18px rgba(76,201,197,.8)}
.btn-dp-primary:hover{color:#fff;transform:translateY(-2px);box-shadow:0 22px 42px -20px rgba(76,201,197,.8)}
.btn-dp-outline{border-color:var(--border);color:var(--heading);background:var(--surface)}
.btn-dp-outline:hover{border-color:var(--primary);color:var(--primary);transform:translateY(-2px);background:var(--surface-2)}
.btn-dp-ghost{color:var(--heading);background:transparent}
.btn-dp-ghost:hover{background:var(--surface-2);color:var(--primary)}
.btn-dp-light{background:rgba(255,255,255,.14);color:#fff;border-color:rgba(255,255,255,.28)}
.btn-dp-light:hover{background:#fff;color:var(--primary)}
.btn-lg-dp{padding:1rem 1.75rem;font-size:1.02rem}
.dp-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:1.7rem;height:100%;transition:transform var(--transition),box-shadow var(--transition),border-color var(--transition)}
.profile-photo-wrap{width:148px;height:148px;border-radius:50%;overflow:hidden;border:5px solid var(--surface-2);box-shadow:var(--shadow-sm);display:grid;place-items:center;background:var(--surface-2)}
.profile-photo-preview{width:100%;height:100%;object-fit:cover;display:block}
.profile-photo-fallback{font-size:2.6rem;font-weight:800;color:var(--primary);background:rgba(21,101,192,.1)}
.dp-card:hover{transform:translateY(-6px);box-shadow:var(--shadow);border-color:rgba(21,101,192,.22)}
.dp-card h3,.dp-card h4,.dp-card h5{margin-bottom:.7rem}
.dp-card p{color:var(--muted);margin-bottom:0;font-size:.95rem;line-height:1.7}
.service-card{position:relative;overflow:hidden;border:1px solid var(--border);background:linear-gradient(180deg, rgba(255,255,255,.02), rgba(21,101,192,.01));}
.service-card-featured{border-color:rgba(255,170,0,.7);box-shadow:0 18px 40px -24px rgba(255,175,0,.7);background:linear-gradient(180deg, rgba(255,191,0,.08), rgba(21,101,192,.02));}
.service-card-featured h2{color:var(--heading)}
.service-card-header{display:flex;justify-content:flex-start;align-items:center;margin-bottom:.9rem;min-height:1.8rem}
.featured-badge{display:inline-flex;align-items:center;justify-content:center;padding:.38rem .7rem;border-radius:999px;background:linear-gradient(135deg,#fbbf24,#f59e0b);color:#fff;font-size:.7rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;box-shadow:0 10px 18px -12px rgba(245,158,11,.8)}
.dp-icon{width:54px;height:54px;border-radius:16px;display:grid;place-items:center;background:var(--gradient-soft);color:var(--primary);font-size:1.25rem;margin-bottom:1.1rem;border:1px solid var(--border)}
.dp-icon-solid{background:var(--gradient-primary);color:#fff;border-color:transparent}
.badge-dp{display:inline-flex;align-items:center;gap:.35rem;font-size:.74rem;font-weight:700;padding:.36rem .72rem;border-radius:999px;letter-spacing:.02em}
.badge-primary-dp{background:rgba(21,101,192,.10);color:var(--primary)}
.badge-process-dp{background:rgba(124,58,237,.12);color:#7C3AED}
.badge-success-dp{background:rgba(22,163,74,.12);color:var(--success)}
.badge-warning-dp{background:rgba(255,152,0,.14);color:#C77700}
.badge-danger-dp{background:rgba(216,67,21,.12);color:var(--danger)}
.badge-muted-dp{background:var(--surface-2);color:var(--muted)}
/* stats */
.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;height:100%;box-shadow:var(--shadow-sm)}
.stat-card:hover{box-shadow:var(--shadow)}
.stat-value{font-family:var(--font-head);font-size:clamp(1.8rem,2.3vw,2.3rem);font-weight:800;color:var(--heading);line-height:1}
.stat-label{color:var(--muted);font-size:.9rem;margin-top:.4rem}
.stat-card .d-flex>div:first-child{min-width:0}
.stat-card .dp-icon{flex:0 0 auto;margin-left:.6rem}
.stat-value{word-break:break-word}
/* pricing */
.price-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:2rem;height:100%;position:relative;transition:all var(--transition)}
.price-card:hover{transform:translateY(-8px);box-shadow:var(--shadow-lg)}
.price-card.featured{border-color:var(--primary);box-shadow:var(--shadow-lg)}
.price-card .amount{font-family:var(--font-head);font-size:2.3rem;font-weight:800;color:var(--heading)}
.price-card ul{list-style:none;padding:0;margin:1.4rem 0}
.price-card li{display:flex;gap:.65rem;align-items:flex-start;padding:.45rem 0;font-size:.94rem;color:var(--text)}
.price-card li i{color:var(--success);margin-top:.25rem}
.ribbon{position:absolute;top:-14px;left:50%;transform:translateX(-50%);background:var(--gradient-primary);color:#fff;font-size:.7rem;font-weight:800;letter-spacing:.12em;padding:.42rem .9rem;border-radius:999px;white-space:nowrap}
/* steps */
.step{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.6rem;height:100%}
.step-num{font-family:var(--font-head);font-size:2rem;font-weight:800;background:var(--gradient-primary);-webkit-background-clip:text;background-clip:text;color:transparent}
.dp-timeline{position:relative;padding-left:2.1rem}
.dp-timeline:before{content:"";position:absolute;left:.55rem;top:.3rem;bottom:.3rem;width:2px;background:var(--border)}
.dp-timeline-item{position:relative;padding-bottom:1.5rem}
.dp-timeline-item:before{content:"";position:absolute;left:-1.85rem;top:.35rem;width:14px;height:14px;border-radius:50%;background:var(--surface);border:3px solid var(--primary)}
.dp-timeline-item.done:before{background:var(--success);border-color:var(--success)}
.dp-timeline-item.pending:before{border-color:var(--border)}
/* testimonial */
.testi-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.7rem;height:100%}
.testi-card .stars{color:var(--accent);margin-bottom:.7rem;letter-spacing:.08em}
.avatar{width:46px;height:46px;border-radius:50%;background:var(--gradient-primary);color:#fff;display:grid;place-items:center;font-weight:700;font-family:var(--font-head);flex:0 0 auto}
/* accordion */
.accordion-item{background:var(--surface);border:1px solid var(--border)!important;border-radius:var(--radius)!important;margin-bottom:.85rem;overflow:hidden}
.accordion-button{background:var(--surface);color:var(--heading);font-family:var(--font-head);font-weight:600;font-size:1rem;padding:1.1rem 1.3rem}
.accordion-button:not(.collapsed){background:var(--gradient-soft);color:var(--primary);box-shadow:none}
.accordion-button:focus{box-shadow:none;border-color:var(--border)}
.accordion-body{color:var(--muted);padding-top:0}
/* forms */
.form-label{font-weight:600;font-size:.9rem;color:var(--heading);margin-bottom:.4rem}
.form-control,.form-select{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:12px;padding:.75rem .95rem;font-size:.95rem}
.form-control:focus,.form-select:focus{background:var(--surface);color:var(--text);border-color:var(--primary);box-shadow:0 0 0 4px rgba(21,101,192,.12)}
.form-control::placeholder{color:var(--muted)}
.input-group-text{background:var(--surface-2);border-color:var(--border);color:var(--muted)}
.form-check-input:checked{background-color:var(--primary);border-color:var(--primary)}
.invalid-feedback{font-size:.82rem}
.dp-autocomplete-results{position:absolute;left:0;right:0;top:calc(100% + .35rem);z-index:30;max-height:240px;overflow-y:auto;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-lg);display:none}
.dp-autocomplete-results.visible{display:block}
.dp-autocomplete-item{display:block;width:100%;text-align:left;padding:.72rem .85rem;border:0;background:transparent;color:var(--text);font-size:.9rem;transition:background var(--transition),color var(--transition)}
.dp-autocomplete-item:hover,.dp-autocomplete-item.active{background:var(--surface-2);color:var(--primary)}
.dp-autocomplete-empty{padding:.8rem .9rem;color:var(--muted);font-size:.85rem}
/* table */
.dp-table-wrap{width:100%;max-width:100%;min-width:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.dp-table{width:100%;max-width:100%;min-width:0;margin:0;color:var(--text);border-collapse:collapse;table-layout:auto}
.dp-table th{background:var(--surface-2);font-size:.76rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:.9rem 1rem;text-align:left;white-space:normal;overflow-wrap:anywhere;vertical-align:top}
.dp-table td{min-width:0;padding:.9rem 1rem;border-top:1px solid var(--border);font-size:.92rem;white-space:normal;overflow-wrap:anywhere;vertical-align:top}
.dp-table tbody tr:hover{background:var(--surface-2)}
/* toast + modal */
.dp-toast-wrap{position:fixed;top:84px;right:20px;z-index:1090;display:flex;flex-direction:column;gap:.6rem}
.dp-toast{background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--primary);border-radius:12px;box-shadow:var(--shadow-lg);padding:.85rem 1.1rem;min-width:270px;display:flex;gap:.7rem;align-items:flex-start;animation:toastIn .3s ease-out}
.dp-toast.success{border-left-color:var(--success)}.dp-toast.warning{border-left-color:var(--warning)}.dp-toast.danger{border-left-color:var(--danger)}
.dp-toast strong{display:block;font-size:.9rem;color:var(--heading)}
.dp-toast span{font-size:.85rem;color:var(--muted)}
@keyframes toastIn{from{opacity:0;transform:translateX(24px)}}
.modal-content{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}
.modal-header,.modal-footer{border-color:var(--border)}
.modal-title{font-family:var(--font-head)}
/* empty & loading */
.empty-state{text-align:center;padding:3.2rem 1.5rem}
.empty-state .dp-icon{margin:0 auto 1.1rem;width:64px;height:64px;font-size:1.5rem}
.empty-state h5{margin-bottom:.4rem}
.empty-state p{color:var(--muted);max-width:44ch;margin:0 auto 1.2rem}
.skeleton{background:linear-gradient(90deg,var(--surface-2) 25%,var(--border) 50%,var(--surface-2) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite;border-radius:10px;height:14px}
@keyframes shimmer{to{background-position:-200% 0}}
.dp-spinner{width:34px;height:34px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
#dp-preloader{position:fixed;inset:0;background:var(--background);z-index:2000;display:grid;place-items:center;transition:opacity .4s ease,visibility .4s}
#dp-preloader.hide{opacity:0;visibility:hidden}
/* progress */
.dp-progress{height:8px;background:var(--surface-2);border-radius:999px;overflow:hidden}
.dp-progress > i{display:block;height:100%;background:var(--gradient-primary);border-radius:999px;transition:width .8s ease}
/* portfolio */
.filter-btn{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;padding:.55rem 1.15rem;font-size:.88rem;font-weight:700;transition:all var(--transition)}
.filter-btn.active,.filter-btn:hover{background:var(--gradient-primary);color:#fff;border-color:transparent}
.folio-thumb{position:relative;width:100%;height:auto;aspect-ratio:16/9;border-radius:var(--radius-sm);background:var(--gradient-primary);display:grid;place-items:center;color:#fff;font-size:2rem;margin-bottom:1rem;overflow:hidden}
.folio-thumb>img{display:block;width:100%;height:100%;object-fit:cover;transition:transform var(--transition)}
.portfolio-card:hover .folio-thumb>img{transform:scale(1.025)}
.folio-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.65rem;background:var(--gradient-primary);color:#fff;font-size:1.7rem}
.folio-placeholder span{font-size:.76rem;font-weight:700}
.portfolio-detail-image{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:var(--radius-sm)}
.portfolio-admin-thumb{display:block;width:116px;height:65px;object-fit:cover;border-radius:8px}
.portfolio-admin-preview{display:block;width:min(100%,420px);aspect-ratio:16/9;object-fit:cover;border-radius:var(--radius-sm)}
/* dropzone */
.dropzone{border:2px dashed var(--border);border-radius:var(--radius);padding:2.4rem;text-align:center;background:var(--surface-2);transition:all var(--transition);cursor:pointer}
.dropzone.dragover{border-color:var(--primary);background:var(--gradient-soft)}
/* animations */
.reveal{opacity:0;transform:translateY(22px);transition:opacity .6s ease,transform .6s ease}
.reveal.visible{opacity:1;transform:none}
.reveal.scale{transform:scale(.96)}
.reveal.scale.visible{transform:none}
.hover-lift{transition:transform var(--transition)}
.hover-lift:hover{transform:translateY(-4px)}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}}

.breadcrumb-item.active{color:var(--muted)}
.breadcrumb-item+.breadcrumb-item::before{color:var(--muted)}
