| 1 |
<?php |
| 2 |
if (!defined('ABSPATH')) |
| 3 |
exit; // Exit if accessed directly |
| 4 |
|
| 5 |
// Vérifier si l'utilisateur a un token JWT |
| 6 |
$jwt_token = get_option('aibui_jwt_token', ''); |
| 7 |
if (empty($jwt_token)) { |
| 8 |
echo '<div class="ai-auth-container"><div class="ai-message error">' . esc_html__('Please sign in to access your credits.', 'ai-builder') . '</div></div>'; |
| 9 |
return; |
| 10 |
} |
| 11 |
?> |
| 12 |
|
| 13 |
<div class="ai-credits-container ai-fade-in"> |
| 14 |
<!-- Header --> |
| 15 |
<div class="ai-credits-header"> |
| 16 |
<h1>AI Credits & Subscription</h1> |
| 17 |
<p>Manage your AI credits and subscription plan</p> |
| 18 |
</div> |
| 19 |
|
| 20 |
<!-- Current Status --> |
| 21 |
<div class="ai-status-section"> |
| 22 |
<div class="ai-status-card"> |
| 23 |
<div class="ai-status-icon"> |
| 24 |
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> |
| 25 |
<circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="2" /> |
| 26 |
<path d="M12 6V12L16 14" stroke="currentColor" stroke-width="2" stroke-linecap="round" |
| 27 |
stroke-linejoin="round" /> |
| 28 |
</svg> |
| 29 |
</div> |
| 30 |
<div class="ai-status-content"> |
| 31 |
<h3>Current Credits</h3> |
| 32 |
<div class="ai-credits-display" id="current-credits"> |
| 33 |
<span class="ai-loading" style="display: none;"></span> |
| 34 |
Loading... |
| 35 |
</div> |
| 36 |
</div> |
| 37 |
</div> |
| 38 |
|
| 39 |
<div class="ai-status-card"> |
| 40 |
<div class="ai-status-icon"> |
| 41 |
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> |
| 42 |
<path d="M12 2L2 7L12 12L22 7L12 2Z" stroke="currentColor" stroke-width="2" |
| 43 |
stroke-linejoin="round" /> |
| 44 |
<path d="M2 17L12 22L22 17" stroke="currentColor" stroke-width="2" stroke-linejoin="round" /> |
| 45 |
<path d="M2 12L12 17L22 12" stroke="currentColor" stroke-width="2" stroke-linejoin="round" /> |
| 46 |
</svg> |
| 47 |
</div> |
| 48 |
<div class="ai-status-content"> |
| 49 |
<h3>Subscription Plan</h3> |
| 50 |
<div class="ai-plan-display" id="current-plan"> |
| 51 |
<span class="ai-loading" style="display: none;"></span> |
| 52 |
Loading... |
| 53 |
</div> |
| 54 |
</div> |
| 55 |
</div> |
| 56 |
</div> |
| 57 |
|
| 58 |
<!-- Subscription Management --> |
| 59 |
<div class="ai-section"> |
| 60 |
<div class="ai-section-header"> |
| 61 |
<h2>Subscription Management</h2> |
| 62 |
<p>Choose the perfect plan for your AI needs</p> |
| 63 |
</div> |
| 64 |
|
| 65 |
<div class="ai-subscription-actions" id="subscription-plans-container"> |
| 66 |
<!-- Plan Essential --> |
| 67 |
<div class="ai-plan-card-wrapper" data-plan="essential"> |
| 68 |
<div class="ai-plan-card ai-plan-essential"> |
| 69 |
<div class="ai-plan-badge">Essential</div> |
| 70 |
<div class="ai-plan-header"> |
| 71 |
<div class="ai-plan-title"> |
| 72 |
<h3>Essential</h3> |
| 73 |
</div> |
| 74 |
</div> |
| 75 |
|
| 76 |
<div class="ai-plan-features"> |
| 77 |
<div class="ai-feature-item"> |
| 78 |
<div class="ai-feature-icon"> |
| 79 |
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" |
| 80 |
xmlns="http://www.w3.org/2000/svg"> |
| 81 |
<path d="M20 6L9 17L4 12" stroke="currentColor" stroke-width="2.5" |
| 82 |
stroke-linecap="round" stroke-linejoin="round" /> |
| 83 |
</svg> |
| 84 |
</div> |
| 85 |
<span class="ai-feature-text">750 credits every month</span> |
| 86 |
</div> |
| 87 |
|
| 88 |
<div class="ai-feature-item"> |
| 89 |
<div class="ai-feature-icon"> |
| 90 |
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" |
| 91 |
xmlns="http://www.w3.org/2000/svg"> |
| 92 |
<path d="M20 6L9 17L4 12" stroke="currentColor" stroke-width="2.5" |
| 93 |
stroke-linecap="round" stroke-linejoin="round" /> |
| 94 |
</svg> |
| 95 |
</div> |
| 96 |
<span class="ai-feature-text">Generation of pages, blocks, images & texts</span> |
| 97 |
</div> |
| 98 |
|
| 99 |
<div class="ai-feature-item"> |
| 100 |
<div class="ai-feature-icon"> |
| 101 |
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" |
| 102 |
xmlns="http://www.w3.org/2000/svg"> |
| 103 |
<path d="M20 6L9 17L4 12" stroke="currentColor" stroke-width="2.5" |
| 104 |
stroke-linecap="round" stroke-linejoin="round" /> |
| 105 |
</svg> |
| 106 |
</div> |
| 107 |
<span class="ai-feature-text">Extra credits available on demand</span> |
| 108 |
</div> |
| 109 |
</div> |
| 110 |
|
| 111 |
<div class="ai-plan-header"> |
| 112 |
<div class="ai-plan-title"> |
| 113 |
<div class="ai-plan-price"> |
| 114 |
<span class="ai-price-amount">$9</span> |
| 115 |
<span class="ai-price-period">/month</span> |
| 116 |
</div> |
| 117 |
<span class="ai-price-credit">$0.012 per credit</span> |
| 118 |
</div> |
| 119 |
</div> |
| 120 |
|
| 121 |
<div class="ai-plan-cta"> |
| 122 |
<button type="button" class="ai-cta-btn ai-plan-btn" data-subscription-type="essential"> |
| 123 |
<span class="ai-loading" style="display: none;"></span> |
| 124 |
<span class="btn-text">Choose Essential</span> |
| 125 |
</button> |
| 126 |
</div> |
| 127 |
</div> |
| 128 |
</div> |
| 129 |
|
| 130 |
<!-- Plan Premium --> |
| 131 |
<div class="ai-plan-card-wrapper" data-plan="premium"> |
| 132 |
<div class="ai-plan-card ai-plan-premium ai-plan-popular"> |
| 133 |
<div class="ai-plan-badge ai-plan-badge-popular">Most Popular</div> |
| 134 |
<div class="ai-plan-header"> |
| 135 |
<div class="ai-plan-title"> |
| 136 |
<h3>Premium</h3> |
| 137 |
</div> |
| 138 |
</div> |
| 139 |
|
| 140 |
<div class="ai-plan-features"> |
| 141 |
<div class="ai-feature-item"> |
| 142 |
<div class="ai-feature-icon"> |
| 143 |
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" |
| 144 |
xmlns="http://www.w3.org/2000/svg"> |
| 145 |
<path d="M20 6L9 17L4 12" stroke="currentColor" stroke-width="2.5" |
| 146 |
stroke-linecap="round" stroke-linejoin="round" /> |
| 147 |
</svg> |
| 148 |
</div> |
| 149 |
<span class="ai-feature-text">2000 credits every month</span> |
| 150 |
</div> |
| 151 |
|
| 152 |
<div class="ai-feature-item"> |
| 153 |
<div class="ai-feature-icon"> |
| 154 |
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" |
| 155 |
xmlns="http://www.w3.org/2000/svg"> |
| 156 |
<path d="M20 6L9 17L4 12" stroke="currentColor" stroke-width="2.5" |
| 157 |
stroke-linecap="round" stroke-linejoin="round" /> |
| 158 |
</svg> |
| 159 |
</div> |
| 160 |
<span class="ai-feature-text">Generation of pages, blocks, images & texts</span> |
| 161 |
</div> |
| 162 |
|
| 163 |
<div class="ai-feature-item"> |
| 164 |
<div class="ai-feature-icon"> |
| 165 |
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" |
| 166 |
xmlns="http://www.w3.org/2000/svg"> |
| 167 |
<path d="M20 6L9 17L4 12" stroke="currentColor" stroke-width="2.5" |
| 168 |
stroke-linecap="round" stroke-linejoin="round" /> |
| 169 |
</svg> |
| 170 |
</div> |
| 171 |
<span class="ai-feature-text">Extra credits available on demand</span> |
| 172 |
</div> |
| 173 |
</div> |
| 174 |
|
| 175 |
<div class="ai-plan-header"> |
| 176 |
<div class="ai-plan-title"> |
| 177 |
<div class="ai-plan-price"> |
| 178 |
<span class="ai-price-amount">$19</span> |
| 179 |
<span class="ai-price-period">/month</span> |
| 180 |
</div> |
| 181 |
<span class="ai-price-credit">$0.009 per credit</span> |
| 182 |
</div> |
| 183 |
</div> |
| 184 |
|
| 185 |
<div class="ai-plan-cta"> |
| 186 |
<button type="button" class="ai-cta-btn ai-plan-btn" data-subscription-type="premium"> |
| 187 |
<span class="ai-loading" style="display: none;"></span> |
| 188 |
<span class="btn-text">Choose Premium</span> |
| 189 |
</button> |
| 190 |
</div> |
| 191 |
</div> |
| 192 |
</div> |
| 193 |
|
| 194 |
<!-- Plan Creator --> |
| 195 |
<div class="ai-plan-card-wrapper" data-plan="creator"> |
| 196 |
<div class="ai-plan-card ai-plan-creator"> |
| 197 |
<div class="ai-plan-badge">Creator</div> |
| 198 |
<div class="ai-plan-header"> |
| 199 |
<div class="ai-plan-title"> |
| 200 |
<h3>Creator</h3> |
| 201 |
</div> |
| 202 |
</div> |
| 203 |
|
| 204 |
<div class="ai-plan-features"> |
| 205 |
<div class="ai-feature-item"> |
| 206 |
<div class="ai-feature-icon"> |
| 207 |
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" |
| 208 |
xmlns="http://www.w3.org/2000/svg"> |
| 209 |
<path d="M20 6L9 17L4 12" stroke="currentColor" stroke-width="2.5" |
| 210 |
stroke-linecap="round" stroke-linejoin="round" /> |
| 211 |
</svg> |
| 212 |
</div> |
| 213 |
<span class="ai-feature-text">6000 credits every month</span> |
| 214 |
</div> |
| 215 |
|
| 216 |
<div class="ai-feature-item"> |
| 217 |
<div class="ai-feature-icon"> |
| 218 |
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" |
| 219 |
xmlns="http://www.w3.org/2000/svg"> |
| 220 |
<path d="M20 6L9 17L4 12" stroke="currentColor" stroke-width="2.5" |
| 221 |
stroke-linecap="round" stroke-linejoin="round" /> |
| 222 |
</svg> |
| 223 |
</div> |
| 224 |
<span class="ai-feature-text">Generation of pages, blocks, images & texts</span> |
| 225 |
</div> |
| 226 |
|
| 227 |
<div class="ai-feature-item"> |
| 228 |
<div class="ai-feature-icon"> |
| 229 |
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" |
| 230 |
xmlns="http://www.w3.org/2000/svg"> |
| 231 |
<path d="M20 6L9 17L4 12" stroke="currentColor" stroke-width="2.5" |
| 232 |
stroke-linecap="round" stroke-linejoin="round" /> |
| 233 |
</svg> |
| 234 |
</div> |
| 235 |
<span class="ai-feature-text">Extra credits available on demand</span> |
| 236 |
</div> |
| 237 |
</div> |
| 238 |
|
| 239 |
<div class="ai-plan-header"> |
| 240 |
<div class="ai-plan-title"> |
| 241 |
<div class="ai-plan-price"> |
| 242 |
<span class="ai-price-amount">$49</span> |
| 243 |
<span class="ai-price-period">/month</span> |
| 244 |
</div> |
| 245 |
<span class="ai-price-credit">$0.008 per credit</span> |
| 246 |
</div> |
| 247 |
</div> |
| 248 |
|
| 249 |
<div class="ai-plan-cta"> |
| 250 |
<button type="button" class="ai-cta-btn ai-plan-btn" data-subscription-type="creator"> |
| 251 |
<span class="ai-loading" style="display: none;"></span> |
| 252 |
<span class="btn-text">Choose Creator</span> |
| 253 |
</button> |
| 254 |
</div> |
| 255 |
</div> |
| 256 |
</div> |
| 257 |
</div> |
| 258 |
|
| 259 |
<div class="ai-section-header" style="margin-bottom: 120px;"> |
| 260 |
</div> |
| 261 |
|
| 262 |
<!-- Cancel Subscription Button (shown when user has active subscription) --> |
| 263 |
<div class="ai-action-card" id="cancel-subscription-card" style="display: none; margin-top: 24px;"> |
| 264 |
<div class="ai-action-icon"> |
| 265 |
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> |
| 266 |
<path d="M12 2V6" stroke="currentColor" stroke-width="2" stroke-linecap="round" |
| 267 |
stroke-linejoin="round" /> |
| 268 |
<path d="M12 18V22" stroke="currentColor" stroke-width="2" stroke-linecap="round" |
| 269 |
stroke-linejoin="round" /> |
| 270 |
<path d="M4.93 4.93L7.76 7.76" stroke="currentColor" stroke-width="2" stroke-linecap="round" |
| 271 |
stroke-linejoin="round" /> |
| 272 |
<path d="M16.24 16.24L19.07 19.07" stroke="currentColor" stroke-width="2" stroke-linecap="round" |
| 273 |
stroke-linejoin="round" /> |
| 274 |
<path d="M2 12H6" stroke="currentColor" stroke-width="2" stroke-linecap="round" |
| 275 |
stroke-linejoin="round" /> |
| 276 |
<path d="M18 12H22" stroke="currentColor" stroke-width="2" stroke-linecap="round" |
| 277 |
stroke-linejoin="round" /> |
| 278 |
<path d="M4.93 19.07L7.76 16.24" stroke="currentColor" stroke-width="2" stroke-linecap="round" |
| 279 |
stroke-linejoin="round" /> |
| 280 |
<path d="M16.24 7.76L19.07 4.93" stroke="currentColor" stroke-width="2" stroke-linecap="round" |
| 281 |
stroke-linejoin="round" /> |
| 282 |
</svg> |
| 283 |
</div> |
| 284 |
<div class="ai-action-content"> |
| 285 |
<h3>Manage Subscription</h3> |
| 286 |
<p>Cancel your subscription or change your plan</p> |
| 287 |
<button type="button" class="ai-danger-btn" id="subscription-btn"> |
| 288 |
<span class="ai-loading" style="display: none;"></span> |
| 289 |
<span class="btn-text">Cancel Subscription</span> |
| 290 |
</button> |
| 291 |
</div> |
| 292 |
</div> |
| 293 |
</div> |
| 294 |
|
| 295 |
|
| 296 |
|
| 297 |
<!-- Credit Purchase --> |
| 298 |
<div class="ai-section" id="credit-purchase-section"> |
| 299 |
<div class="ai-section-header"> |
| 300 |
<h2></h2> |
| 301 |
<p></p> |
| 302 |
</div> |
| 303 |
|
| 304 |
<div class="ai-credit-actions"> |
| 305 |
<div class="ai-action-card" id="credit-purchase-card"> |
| 306 |
<div class="ai-action-icon"> |
| 307 |
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> |
| 308 |
<path d="M12 1V23" stroke="currentColor" stroke-width="2" stroke-linecap="round" |
| 309 |
stroke-linejoin="round" /> |
| 310 |
<path |
| 311 |
d="M17 5H9.5C8.57174 5 7.6815 5.36875 7.02513 6.02513C6.36875 6.6815 6 7.57174 6 8.5C6 9.42826 6.36875 10.3185 7.02513 10.9749C7.6815 11.6313 8.57174 12 9.5 12H14.5C15.4283 12 16.3185 12.3687 16.9749 13.0251C17.6313 13.6815 18 14.5717 18 15.5C18 16.4283 17.6313 17.3185 16.9749 17.9749C16.3185 18.6313 15.4283 19 14.5 19H6" |
| 312 |
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /> |
| 313 |
</svg> |
| 314 |
</div> |
| 315 |
<div class="ai-action-content"> |
| 316 |
<h3>Purchase 750 Credits</h3> |
| 317 |
<p>Buy credits immediately, pay once.</p> |
| 318 |
|
| 319 |
<!-- Message pour utilisateurs sans abonnement --> |
| 320 |
<div id="subscription-required-message" class="ai-subscription-required" style="display: none;"> |
| 321 |
<div class="ai-warning-icon"> |
| 322 |
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" |
| 323 |
xmlns="http://www.w3.org/2000/svg"> |
| 324 |
<path |
| 325 |
d="M10.29 3.86L1.82 18A2 2 0 0 0 3.54 21H20.46A2 2 0 0 0 22.18 18L13.71 3.86A2 2 0 0 0 10.29 3.86Z" |
| 326 |
stroke="currentColor" stroke-width="2" stroke-linecap="round" |
| 327 |
stroke-linejoin="round" /> |
| 328 |
<path d="M12 9V13" stroke="currentColor" stroke-width="2" stroke-linecap="round" |
| 329 |
stroke-linejoin="round" /> |
| 330 |
<circle cx="12" cy="17" r="1" stroke="currentColor" stroke-width="2" /> |
| 331 |
</svg> |
| 332 |
</div> |
| 333 |
<div class="ai-warning-content"> |
| 334 |
<strong>Active subscription required</strong> |
| 335 |
<p>You need an active subscription to purchase additional credits. Get a subscription first |
| 336 |
to unlock this feature.</p> |
| 337 |
</div> |
| 338 |
</div> |
| 339 |
|
| 340 |
<button type="button" class="ai-primary-btn" id="buy-credits-btn" onclick="handleCreditPurchase()"> |
| 341 |
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> |
| 342 |
<path d="M12 2V6" stroke="currentColor" stroke-width="2" stroke-linecap="round" |
| 343 |
stroke-linejoin="round" /> |
| 344 |
<path d="M12 18V22" stroke="currentColor" stroke-width="2" stroke-linecap="round" |
| 345 |
stroke-linejoin="round" /> |
| 346 |
<path d="M4.93 4.93L7.76 7.76" stroke="currentColor" stroke-width="2" stroke-linecap="round" |
| 347 |
stroke-linejoin="round" /> |
| 348 |
<path d="M16.24 16.24L19.07 19.07" stroke="currentColor" stroke-width="2" |
| 349 |
stroke-linecap="round" stroke-linejoin="round" /> |
| 350 |
<path d="M2 12H6" stroke="currentColor" stroke-width="2" stroke-linecap="round" |
| 351 |
stroke-linejoin="round" /> |
| 352 |
<path d="M18 12H22" stroke="currentColor" stroke-width="2" stroke-linecap="round" |
| 353 |
stroke-linejoin="round" /> |
| 354 |
<path d="M4.93 19.07L7.76 16.24" stroke="currentColor" stroke-width="2" |
| 355 |
stroke-linecap="round" stroke-linejoin="round" /> |
| 356 |
<path d="M16.24 7.76L19.07 4.93" stroke="currentColor" stroke-width="2" |
| 357 |
stroke-linecap="round" stroke-linejoin="round" /> |
| 358 |
</svg> |
| 359 |
Buy Credits |
| 360 |
</button> |
| 361 |
</div> |
| 362 |
</div> |
| 363 |
</div> |
| 364 |
</div> |
| 365 |
|
| 366 |
<!-- Account Management --> |
| 367 |
<div class="ai-section"> |
| 368 |
<div class="ai-section-header"> |
| 369 |
<h2>Account Management</h2> |
| 370 |
<p>Manage your billing and account settings</p> |
| 371 |
</div> |
| 372 |
|
| 373 |
<div class="ai-account-actions"> |
| 374 |
<div class="ai-action-card"> |
| 375 |
<div class="ai-action-icon"> |
| 376 |
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> |
| 377 |
<path |
| 378 |
d="M20 21V19C20 17.9391 19.5786 16.9217 18.8284 16.1716C18.0783 15.4214 17.0609 15 16 15H8C6.93913 15 5.92172 15.4214 5.17157 16.1716C4.42143 16.9217 4 17.9391 4 19V21" |
| 379 |
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /> |
| 380 |
<circle cx="12" cy="7" r="4" stroke="currentColor" stroke-width="2" stroke-linecap="round" |
| 381 |
stroke-linejoin="round" /> |
| 382 |
</svg> |
| 383 |
</div> |
| 384 |
<div class="ai-action-content"> |
| 385 |
<h3>Stripe Account</h3> |
| 386 |
<p>Access your Stripe dashboard for billing management</p> |
| 387 |
<button type="button" class="ai-secondary-btn" onclick="handleStripeAccount()"> |
| 388 |
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> |
| 389 |
<path d="M18 13V19A2 2 0 0 1 16 21H8A2 2 0 0 1 6 19V13" stroke="currentColor" |
| 390 |
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /> |
| 391 |
<path d="M12 3V15" stroke="currentColor" stroke-width="2" stroke-linecap="round" |
| 392 |
stroke-linejoin="round" /> |
| 393 |
<path d="M9 6L12 3L15 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" |
| 394 |
stroke-linejoin="round" /> |
| 395 |
</svg> |
| 396 |
View Stripe Account |
| 397 |
</button> |
| 398 |
</div> |
| 399 |
</div> |
| 400 |
</div> |
| 401 |
</div> |
| 402 |
|
| 403 |
<!-- Messages --> |
| 404 |
<div id="message-container"></div> |
| 405 |
</div> |
| 406 |
|
| 407 |
<!-- Confirmation Modal --> |
| 408 |
<div id="confirmation-modal" class="ai-modal" style="display: none;"> |
| 409 |
<div class="ai-modal-content"> |
| 410 |
<div class="ai-modal-header"> |
| 411 |
<h3>Cancel Subscription</h3> |
| 412 |
<button type="button" class="ai-modal-close" onclick="closeModal()">×</button> |
| 413 |
</div> |
| 414 |
<div class="ai-modal-body"> |
| 415 |
<p>Are you sure you want to cancel your subscription? You will lose access to monthly credits at the end of |
| 416 |
your current billing period.</p> |
| 417 |
</div> |
| 418 |
<div class="ai-modal-footer"> |
| 419 |
<button type="button" class="ai-secondary-btn" onclick="closeModal()">Keep Subscription</button> |
| 420 |
<button type="button" class="ai-danger-btn" onclick="confirmCancelSubscription()"> |
| 421 |
<span class="ai-loading" style="display: none;"></span> |
| 422 |
Yes, Cancel Subscription |
| 423 |
</button> |
| 424 |
</div> |
| 425 |
</div> |
| 426 |
</div> |
| 427 |
|
| 428 |
<style> |
| 429 |
/* Subscription Plans Container */ |
| 430 |
.ai-subscription-actions { |
| 431 |
display: grid; |
| 432 |
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); |
| 433 |
gap: 24px; |
| 434 |
margin-bottom: 24px; |
| 435 |
} |
| 436 |
|
| 437 |
.ai-plan-card-wrapper { |
| 438 |
position: relative; |
| 439 |
} |
| 440 |
|
| 441 |
/* Modern Plan Card Styles */ |
| 442 |
.ai-plan-card { |
| 443 |
--plan-accent: #4f46e5; |
| 444 |
background: #ffffff; |
| 445 |
border-radius: 16px; |
| 446 |
padding: 32px; |
| 447 |
color: #0f172a; |
| 448 |
box-shadow: 0 18px 30px rgba(15, 23, 42, 0.07); |
| 449 |
border: 1px solid #e4e8ef; |
| 450 |
position: relative; |
| 451 |
overflow: hidden; |
| 452 |
transition: all 0.3s ease; |
| 453 |
height: 100%; |
| 454 |
display: flex; |
| 455 |
flex-direction: column; |
| 456 |
} |
| 457 |
|
| 458 |
.ai-plan-card:hover { |
| 459 |
transform: translateY(-4px); |
| 460 |
box-shadow: 0 24px 45px rgba(15, 23, 42, 0.12); |
| 461 |
} |
| 462 |
|
| 463 |
.ai-plan-card::before { |
| 464 |
content: ''; |
| 465 |
position: absolute; |
| 466 |
top: 0; |
| 467 |
left: 16px; |
| 468 |
right: 16px; |
| 469 |
height: 3px; |
| 470 |
border-radius: 999px; |
| 471 |
background: linear-gradient(90deg, var(--plan-accent), rgba(79, 70, 229, 0.1)); |
| 472 |
} |
| 473 |
|
| 474 |
.ai-plan-card>* { |
| 475 |
position: relative; |
| 476 |
z-index: 1; |
| 477 |
} |
| 478 |
|
| 479 |
/* Plan Badge */ |
| 480 |
.ai-plan-badge { |
| 481 |
position: absolute; |
| 482 |
top: 18px; |
| 483 |
right: 18px; |
| 484 |
background: rgba(15, 23, 42, 0.08); |
| 485 |
color: #0f172a; |
| 486 |
padding: 6px 14px; |
| 487 |
border-radius: 999px; |
| 488 |
font-size: 11px; |
| 489 |
font-weight: 600; |
| 490 |
text-transform: uppercase; |
| 491 |
letter-spacing: 0.6px; |
| 492 |
} |
| 493 |
|
| 494 |
.ai-plan-badge-popular { |
| 495 |
background: rgba(79, 70, 229, 0.12); |
| 496 |
color: #4338ca; |
| 497 |
} |
| 498 |
|
| 499 |
/* Plan Colors */ |
| 500 |
.ai-plan-essential { |
| 501 |
--plan-accent: #1d4ed8; |
| 502 |
} |
| 503 |
|
| 504 |
.ai-plan-premium { |
| 505 |
--plan-accent: #7c3aed; |
| 506 |
} |
| 507 |
|
| 508 |
.ai-plan-creator { |
| 509 |
--plan-accent: #db2777; |
| 510 |
} |
| 511 |
|
| 512 |
.ai-plan-popular { |
| 513 |
box-shadow: 0 24px 45px rgba(76, 29, 149, 0.18); |
| 514 |
border-color: rgba(76, 29, 149, 0.2); |
| 515 |
} |
| 516 |
|
| 517 |
.ai-plan-header { |
| 518 |
text-align: center; |
| 519 |
margin-bottom: 24px; |
| 520 |
} |
| 521 |
|
| 522 |
.ai-plan-header:first-of-type { |
| 523 |
margin-top: 16px; |
| 524 |
} |
| 525 |
|
| 526 |
.ai-plan-title h3 { |
| 527 |
font-size: 26px; |
| 528 |
font-weight: 600; |
| 529 |
margin: 0 0 6px 0; |
| 530 |
color: #0f172a; |
| 531 |
} |
| 532 |
|
| 533 |
.ai-plan-price { |
| 534 |
display: flex; |
| 535 |
align-items: baseline; |
| 536 |
justify-content: center; |
| 537 |
gap: 4px; |
| 538 |
} |
| 539 |
|
| 540 |
.ai-price-amount { |
| 541 |
font-size: 38px; |
| 542 |
font-weight: 600; |
| 543 |
color: #0f172a; |
| 544 |
margin-top: 12px; |
| 545 |
} |
| 546 |
|
| 547 |
.ai-price-period { |
| 548 |
font-size: 16px; |
| 549 |
font-weight: 500; |
| 550 |
color: #6b7280; |
| 551 |
} |
| 552 |
|
| 553 |
.ai-plan-features { |
| 554 |
margin-bottom: 24px; |
| 555 |
flex-grow: 1; |
| 556 |
} |
| 557 |
|
| 558 |
.ai-feature-item { |
| 559 |
display: flex; |
| 560 |
align-items: center; |
| 561 |
gap: 12px; |
| 562 |
margin-bottom: 16px; |
| 563 |
padding: 12px 16px; |
| 564 |
background: #f8fafc; |
| 565 |
border-radius: 12px; |
| 566 |
border: 1px solid #e2e8f0; |
| 567 |
transition: all 0.3s ease; |
| 568 |
} |
| 569 |
|
| 570 |
.ai-feature-item:hover { |
| 571 |
border-color: rgba(79, 70, 229, 0.4); |
| 572 |
transform: translateX(4px); |
| 573 |
} |
| 574 |
|
| 575 |
.ai-feature-icon { |
| 576 |
flex-shrink: 0; |
| 577 |
width: 32px; |
| 578 |
height: 32px; |
| 579 |
background: rgba(79, 70, 229, 0.12); |
| 580 |
border-radius: 50%; |
| 581 |
display: flex; |
| 582 |
align-items: center; |
| 583 |
justify-content: center; |
| 584 |
color: var(--plan-accent); |
| 585 |
border: 1px solid rgba(79, 70, 229, 0.2); |
| 586 |
} |
| 587 |
|
| 588 |
.ai-feature-text { |
| 589 |
font-size: 16px; |
| 590 |
font-weight: 500; |
| 591 |
color: #0f172a; |
| 592 |
line-height: 1.4; |
| 593 |
} |
| 594 |
|
| 595 |
.ai-plan-cta { |
| 596 |
text-align: center; |
| 597 |
} |
| 598 |
|
| 599 |
.ai-cta-btn { |
| 600 |
background: var(--plan-accent); |
| 601 |
color: #fff; |
| 602 |
border: 2px solid var(--plan-accent); |
| 603 |
padding: 14px 28px; |
| 604 |
border-radius: 12px; |
| 605 |
font-size: 16px; |
| 606 |
font-weight: 600; |
| 607 |
display: inline-flex; |
| 608 |
align-items: center; |
| 609 |
justify-content: center; |
| 610 |
gap: 8px; |
| 611 |
cursor: pointer; |
| 612 |
transition: all 0.3s ease; |
| 613 |
box-shadow: 0 10px 25px rgba(79, 70, 229, 0.25); |
| 614 |
text-transform: none; |
| 615 |
letter-spacing: 0; |
| 616 |
width: 100%; |
| 617 |
backdrop-filter: none; |
| 618 |
} |
| 619 |
|
| 620 |
.ai-cta-btn:hover { |
| 621 |
background: #fff; |
| 622 |
color: var(--plan-accent); |
| 623 |
transform: translateY(-2px); |
| 624 |
box-shadow: 0 12px 30px rgba(15, 23, 42, 0.12); |
| 625 |
} |
| 626 |
|
| 627 |
.ai-cta-btn:active { |
| 628 |
transform: translateY(0); |
| 629 |
} |
| 630 |
|
| 631 |
.ai-cta-btn:disabled { |
| 632 |
opacity: 0.6; |
| 633 |
cursor: not-allowed; |
| 634 |
transform: none; |
| 635 |
} |
| 636 |
|
| 637 |
.ai-plan-btn.current-plan { |
| 638 |
background: rgba(79, 70, 229, 0.08); |
| 639 |
border-color: rgba(79, 70, 229, 0.2); |
| 640 |
cursor: default; |
| 641 |
} |
| 642 |
|
| 643 |
.ai-plan-btn.current-plan:hover { |
| 644 |
transform: none; |
| 645 |
} |
| 646 |
|
| 647 |
/* Action Card Container */ |
| 648 |
.ai-action-card { |
| 649 |
background: white; |
| 650 |
border-radius: 16px; |
| 651 |
padding: 32px; |
| 652 |
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.08); |
| 653 |
border: 1px solid rgba(0, 0, 0, 0.06); |
| 654 |
transition: all 0.3s ease; |
| 655 |
} |
| 656 |
|
| 657 |
.ai-action-card:hover { |
| 658 |
transform: translateY(-4px); |
| 659 |
box-shadow: 0 16px 48px rgba(0, 0, 0, 0.12); |
| 660 |
} |
| 661 |
|
| 662 |
/* Current Plan Indicator */ |
| 663 |
.ai-plan-card-wrapper[data-current-plan="true"] .ai-plan-card { |
| 664 |
border: 3px solid rgba(255, 255, 255, 0.8); |
| 665 |
box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.3), 0 24px 48px rgba(102, 126, 234, 0.3); |
| 666 |
} |
| 667 |
|
| 668 |
/* Responsive Design */ |
| 669 |
@media (max-width: 768px) { |
| 670 |
.ai-subscription-actions { |
| 671 |
grid-template-columns: 1fr; |
| 672 |
} |
| 673 |
|
| 674 |
.ai-plan-card { |
| 675 |
padding: 24px; |
| 676 |
} |
| 677 |
|
| 678 |
.ai-price-amount { |
| 679 |
font-size: 36px; |
| 680 |
} |
| 681 |
|
| 682 |
.ai-feature-item { |
| 683 |
padding: 10px 12px; |
| 684 |
} |
| 685 |
|
| 686 |
.ai-cta-btn { |
| 687 |
padding: 12px 24px; |
| 688 |
font-size: 15px; |
| 689 |
} |
| 690 |
|
| 691 |
.ai-plan-badge { |
| 692 |
font-size: 10px; |
| 693 |
padding: 4px 8px; |
| 694 |
} |
| 695 |
} |
| 696 |
|
| 697 |
/* Animation for loading states */ |
| 698 |
.ai-loading { |
| 699 |
animation: spin 1s linear infinite; |
| 700 |
} |
| 701 |
|
| 702 |
@keyframes spin { |
| 703 |
from { |
| 704 |
transform: rotate(0deg); |
| 705 |
} |
| 706 |
|
| 707 |
to { |
| 708 |
transform: rotate(360deg); |
| 709 |
} |
| 710 |
} |
| 711 |
</style> |