Plugin Directory

Changeset 3444238


Ignore:
Timestamp:
01/21/2026 03:53:21 PM (4 weeks ago)
Author:
anyapi
Message:

Update trunk to version 1.1.5

Location:
anyapi/trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • anyapi/trunk/anyapi.php

    r3414512 r3444238  
    99 * Plugin URI:        https://www.anyapiplugin.com
    1010 * Description:       No-Code WooCommerce REST API Integration. Connect Orders to any APIs with Automations, JSON Filter, API logs, and Easy Setup in Minutes.
    11  * Version:           1.1.4
     11 * Version:           1.1.5
    1212 * Author:            JC
    1313 * Author URI:        https://www.anyapiplugin.com
     
    2222if ( ! function_exists( 'add_action' ) ) { exit; }
    2323
    24 define( 'ANYAPI_RELEASE_DATE', '2025-12-8' );
    25 define( 'ANYAPI_VERSION', '1.1.4' );
     24define( 'ANYAPI_RELEASE_DATE', '2026-1-21' );
     25define( 'ANYAPI_VERSION', '1.1.5' );
    2626define( 'ANYAPI_ASSETS', '1.0.0' );
    2727
  • anyapi/trunk/assets/css/style.css

    r3414465 r3444238  
    10741074  border-radius: 20px;
    10751075  margin: 30px 0;
    1076   box-shadow: 0 20px 40px rgba(102, 126, 234, 0.3),
     1076  box-shadow:
     1077    0 20px 40px rgba(102, 126, 234, 0.3),
    10771078    0 10px 20px rgba(118, 75, 162, 0.2);
    10781079  position: relative;
     
    12091210}
    12101211#anyapi-dashboard {
    1211   font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
     1212  font-family:
     1213    -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    12121214  background: var(--anyapi-bg);
    12131215  min-height: 80vh;
     
    13231325  width: 300px;
    13241326  max-width: 100%;
     1327}
     1328.logs-controls {
     1329  display: flex;
     1330  flex-wrap: wrap;
     1331  gap: 12px;
     1332  align-items: center;
     1333}
     1334#anyapi-status-filter {
     1335  padding: 8px 12px;
     1336  border: 1px solid #ddd;
     1337  border-radius: 8px;
     1338  background: white;
     1339  min-width: 160px;
     1340}
     1341.dark-mode #anyapi-status-filter {
     1342  background: #2d3748;
     1343  border-color: #4a5568;
     1344  color: white;
     1345}
     1346#anyapi-log-refresh .dashicons {
     1347  font-size: 16px;
     1348  width: 16px;
     1349  height: 16px;
     1350  vertical-align: middle;
     1351}
     1352#anyapi-log-refresh.rotating .dashicons {
     1353  animation: spin 1s linear infinite;
     1354}
     1355.skeleton-row {
     1356  background: #f8f9fa;
     1357  animation: pulse 1.5s infinite ease-in-out;
     1358}
     1359.skeleton {
     1360  height: 16px;
     1361  background: linear-gradient(90deg, #e0e0e0 25%, #f0f0f0 50%, #e0e0e0 75%);
     1362  background-size: 200% 100%;
     1363  border-radius: 4px;
     1364  animation: skeleton-loading 1.8s infinite linear;
     1365}
     1366.skeleton.short {
     1367  width: 60%;
     1368}
     1369.skeleton.long {
     1370  width: 85%;
     1371}
     1372.skeleton.status {
     1373  width: 40%;
     1374}
     1375.skeleton.payload {
     1376  width: 90%;
     1377  height: 32px;
     1378}
     1379@keyframes skeleton-loading {
     1380  0% {
     1381    background-position: 200% 0;
     1382  }
     1383  100% {
     1384    background-position: -200% 0;
     1385  }
     1386}
     1387@keyframes pulse {
     1388  0%,
     1389  100% {
     1390    opacity: 1;
     1391  }
     1392  50% {
     1393    opacity: 0.7;
     1394  }
     1395}
     1396.dark-mode .skeleton {
     1397  background: linear-gradient(90deg, #2d3748 25%, #4a5568 50%, #2d3748 75%);
     1398}
     1399.loading {
     1400  text-align: center;
     1401  padding: 60px;
     1402  color: #64748b;
     1403  font-size: 16px;
     1404}
     1405.loading::after {
     1406  content: "";
     1407  display: inline-block;
     1408  width: 20px;
     1409  height: 20px;
     1410  border: 2px solid #cbd5e1;
     1411  border-top-color: #7c3aed;
     1412  border-radius: 50%;
     1413  animation: spin 1s linear infinite;
     1414  margin-left: 12px;
     1415}
     1416@keyframes spin {
     1417  to {
     1418    transform: rotate(360deg);
     1419  }
     1420}
     1421#logs-pagination,
     1422#logs-info {
     1423  display: flex;
     1424  align-items: center;
     1425  gap: 16px;
     1426  flex-wrap: wrap;
     1427  margin: 5px 0;
     1428  font-size: 14px;
     1429  color: #2c3338;
     1430}
     1431.tablenav-pages a.button,
     1432.tablenav-pages span.current-page,
     1433.tablenav-pages a.page-numbers {
     1434  display: inline-flex;
     1435  align-items: center;
     1436  justify-content: center;
     1437  min-width: 30px;
     1438  height: 30px;
     1439  font-size: 13px;
     1440  font-weight: 600;
     1441  padding: 0 12px;
     1442  margin: 0 4px;
     1443  border-radius: 6px;
     1444  text-decoration: none;
     1445  transition: all 0.2s ease;
     1446  box-sizing: border-box;
     1447}
     1448.tablenav-pages a.button,
     1449.tablenav-pages a.page-numbers {
     1450  background: #ffffff;
     1451  border: 1px solid #c3c4c7;
     1452  color: #2c3338;
     1453}
     1454.tablenav-pages a.button:hover,
     1455.tablenav-pages a.page-numbers:hover {
     1456  background: #f0f0f1;
     1457  border-color: #8c8f94;
     1458  color: #1d2327;
     1459}
     1460.tablenav-pages span.current-page {
     1461  background: #2271b1;
     1462  color: white;
     1463  border: 1px solid #135e96;
     1464  font-weight: bold;
     1465  box-shadow: 0 2px 6px rgba(34, 113, 177, 0.25);
     1466}
     1467.prev-page,
     1468.next-page {
     1469  min-width: 100px !important;
     1470  font-weight: 600;
     1471}
     1472.tablenav-pages span.dots {
     1473  padding: 0 12px;
     1474  color: #646970;
     1475  font-weight: bold;
     1476}
     1477@media (max-width: 782px) {
     1478  #logs-pagination,
     1479  #logs-info {
     1480    flex-direction: column;
     1481    align-items: flex-start;
     1482    gap: 12px;
     1483  }
     1484  .tablenav-pages a.button,
     1485  .tablenav-pages span.current-page {
     1486    min-width: 36px;
     1487    height: 36px;
     1488    font-size: 14px;
     1489  }
     1490  .prev-page,
     1491  .next-page {
     1492    min-width: 80px !important;
     1493  }
    13251494}
    13261495.method-post {
     
    14101579  text-overflow: ellipsis;
    14111580  white-space: nowrap;
    1412 }
    1413 .loading {
    1414   text-align: center;
    1415   padding: 60px;
    1416   font-size: 18px;
    1417   color: #646970;
    14181581}
    14191582.anyapi-sidebar {
  • anyapi/trunk/assets/css/style.css.map

    r3414465 r3444238  
    1 {"version":3,"sources":["modules/tabs.scss","modules/button.scss","modules/checkbox.scss","modules/table.scss","modules/form.scss","modules/features.scss","modules/pretty.scss","modules/general.scss","modules/desert.scss","modules/ui-dashboard.scss","modules/ui-orderapi.scss"],"names":[],"mappings":"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","file":"style.css","sourcesContent":[".nav-tabs,\n.nav-tabs-tools,\n.nav-tabs-filter,\n.nav-tabs-api,\n.nav-tabs-apiauth {\n  float: left;\n  width: 100%;\n  margin: 0;\n  list-style-type: none;\n  border-bottom: 1px solid transparent;\n\n  > li {\n    float: left;\n    margin-bottom: -1px;\n\n    > a {\n      margin-right: 2px;\n      line-height: 1.5;\n      padding: 10px;\n      border: 1px solid transparent;\n      border-radius: 4px 4px 0 0;\n      float: left;\n      text-decoration: none;\n\n      &:hover {\n        border-color: #eee #eee #ddd;\n      }\n    }\n\n    &.active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: #555;\n        cursor: default;\n        background-color: #fff;\n        border-color: transparent;\n      }\n    }\n  }\n}\n\n.tab-content > .tab-pane,\n.tab-content-tools > .tab-pane-tools {\n  float: left;\n  width: 98%;\n  display: none;\n\n  &.active {\n    display: block;\n    padding: 10px;\n    background-color: #fff;\n    box-shadow: 0 5px 4px -2px rgba(0, 0, 0, 0.15);\n  }\n}\n\n#top-btn {\n  display: none;\n  position: fixed;\n  bottom: 20px;\n  right: 30px;\n  z-index: 99;\n  font-size: 18px;\n  border: none;\n  outline: none;\n  background-color: purple;\n  color: white;\n  cursor: pointer;\n  padding: 15px;\n  border-radius: 4px;\n}\n\n#top-btn:hover {\n  background-color: #555;\n}\n","/**************************/\n/* Tags */\n/**************************/\n\n.tag {\n  display: inline-block;\n  text-decoration: none;\n  padding: 0.4rem 0.8rem; /* 0.4 0.8*/\n  font-size: 0.9rem; /* 1.2 */\n  color: none;\n  border-radius: 100px;\n  font-weight: 300;\n}\n\n.tag.small {\n  font-size: 0.8rem;\n  border-radius: 3px;\n  font-weight: 300;\n}\n\n.tag.medium {\n  font-size: 0.9rem;\n  border-radius: 15px;\n  font-weight: 300;\n}\n\n.tag.large {\n  font-size: 1.4rem;\n  border-radius: 15px;\n  font-weight: 400;\n}\n\n.tag.step {\n  font-size: 1.2rem;\n  border-radius: 50px;\n  font-weight: 500;\n}\n\n.tag.uppercase {\n  text-transform: uppercase;\n}\n\n/* Basic */\n.tag--woo {\n  color: #eee;\n  background-color: rgb(108, 59, 164);\n}\n\n.tag--woorev {\n  color: rgb(108, 59, 164);\n  background-color: #eee;\n}\n\n.tag--wooadv {\n  color: #eee;\n  background-color: rgb(218, 179, 254);\n}\n\n.tag--auth {\n  color: #333;\n  background-color: rgb(246, 169, 14);\n}\n\n.tag--attr {\n  color: #333;\n  background-color: rgb(206, 206, 206);\n}\n\n.tag--large {\n  color: #333;\n  background-color: #eee;\n}\n\n/* Attributes */\n.tag--order {\n  color: #eee;\n  background-color: rgb(132, 95, 132);\n}\n\n.tag--billing {\n  color: #333;\n  background-color: rgb(206, 206, 206);\n}\n\n.tag--fields {\n  color: lightblue;\n  background-color: rgb(25, 25, 25);\n}\n\n/* Features */\n.tag--codefree {\n  // background-color: rgb(249, 222, 0);\n  color: #fff;\n  background-color: #11111a;\n}\n\n.tag--secure {\n  color: #fff;\n  background-color: rgb(10, 151, 218);\n}\n\n.tag--notice {\n  // background-color: #dd6413;\n  color: #fff;\n  background-color: #4a4af3;\n}\n\n.tag--new {\n  color: #11111a;\n  background-color: #f34a4a;\n}\n\n.tag--cap {\n  color: #f34a4a;\n  background-color: #11111a;\n}\n\n/* License */\n.tag--disable {\n  color: #fff;\n  background-color: rgb(231, 0, 0);\n}\n\n.tag--enable {\n  color: #fff;\n  background-color: #43aa8b;\n  // background-color: rgb(48, 154, 62);\n}\n\n/**************************/\n/* Dynamic Tags */\n/**************************/\n\n.tag.available:hover {\n  cursor: pointer;\n  opacity: 0.7;\n}\n\n.tag.selected {\n  cursor: pointer;\n  opacity: 0.7;\n}\n\n.tag.disabled {\n  color: white;\n  background-color: #d2d2d2;\n  /* text-decoration: line-through; */\n  pointer-events: none;\n}\n\n.tag.pro {\n  color: #333;\n  background-color: #fdf2e9;\n  cursor: not-allowed;\n}\n\n/* Step */\n.step-tag {\n  color: #eee;\n  background-color: #ccc;\n  cursor: pointer;\n  text-transform: uppercase;\n}\n\n.step-tag.current {\n  background-color: rgb(108, 59, 164);\n}\n\n.order-api-step > .step-pane {\n  display: none;\n  &.active {\n    display: block;\n  }\n}\n\n.notice-tag {\n  color: #eee;\n  background-color: #ccc;\n}\n\n/**************************/\n/* Buttons */\n/**************************/\n\n.btn,\n.btn:link,\n.btn:visited {\n  display: inline-block;\n  text-decoration: none;\n  font-size: 1rem; /* 2 */\n  font-weight: 400;\n  padding: 0.8rem 1.6rem; /* 1.6 3.2 */\n  border-radius: 9px; /* 9 */\n\n  /* default color*/\n  // background-color: #f34a4a;\n  color: #11111a;\n\n  /* Only necessary for .btn */\n  border: none;\n  cursor: pointer;\n  font-family: inherit;\n\n  /* Put transition on original \"state\" */\n  /* transition: background-color 0.3s; */\n  transition: all 0.3s;\n}\n\n.btn.medium {\n  font-size: 0.9rem;\n  font-weight: 400;\n  padding: 0.6rem 1rem;\n}\n\n.btn--full:link,\n.btn--full:visited {\n  // background-color: #e67e22;\n  // color: #fff;\n  background-color: #f34a4a;\n  color: #11111a;\n}\n\n.btn--full:hover,\n.btn--full:active {\n  // background-color: #cf711f;\n  background-color: #11111a;\n  color: #f34a4a;\n}\n\n.btn--full.small {\n  font-size: 0.9rem;\n  border-radius: 26px;\n  font-weight: 500;\n}\n\n.btn--outline:link,\n.btn--outline:visited {\n  // background-color: #fff;\n  background-color: #2f2f48;\n  // color: #555;\n}\n\n.btn--outline:hover,\n.btn--outline:active {\n  // background-color: #fdf2e9;\n  background-color: #11111a;\n  color: #fff;\n\n  // border: 3px solid #fff;\n  /* Trick to add border inside */\n  // box-shadow: inset 0 0 0 3px #fff;\n}\n\n/* Prev Next Save */\n.next-btn,\n.prev-btn,\n.save-btn,\n.back-btn,\n.save-settings {\n  text-align: right;\n  padding: 1px;\n}\n\n.btn-next,\n.btn-prev,\n.btn-save,\n.btn-back {\n  float: right;\n}\n","/* $on: #009eea; */\n$on: rgb(108, 59, 164);\n$bg: #d9cb9e;\n$off: #8c8c8c;\n\n@mixin center {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  transform: translate(-50%, -50%);\n}\n\n@mixin userSelect($value) {\n  -webkit-touch-callout: $value;\n  -webkit-user-select: $value;\n  -khtml-user-select: $value;\n  -moz-user-select: $value;\n  -ms-user-select: $value;\n  user-select: $value;\n}\n\n@mixin ui-toggle($height, $on, $off) {\n  margin: 0;\n  padding: 0;\n\n  input[type=\"checkbox\"] {\n    display: none;\n\n    &:checked + label {\n      border-color: $on;\n      background: $on;\n      box-shadow: inset 0 0 0 #{$height / 2} $on;\n\n      > div {\n        margin-left: $height;\n      }\n    }\n  }\n\n  label {\n    transition: all 200ms ease;\n    display: inline-block;\n    position: relative;\n\n    @include userSelect(none);\n\n    background: $off;\n    box-shadow: inset 0 0 0 0 $on;\n    border: 2px solid $off;\n    border-radius: $height + 2;\n    width: $height * 2;\n    height: $height;\n\n    div {\n      transition: all 200ms ease;\n      background: #ffffff;\n      width: $height;\n      height: $height;\n      border-radius: $height / 2;\n    }\n\n    &:hover,\n    & > div:hover {\n      cursor: pointer;\n    }\n  }\n}\n\ndiv.ui-toggle {\n  @include ui-toggle(16px, $on, $off);\n\n  &.mb-10 {\n    margin-bottom: 10px;\n  }\n}\n",".api-table {\n  width: 100%;\n  border-spacing: 5px;\n  text-align: left;\n\n  &,\n  & th,\n  & td {\n    border: 1px solid #ccc;\n    border-collapse: collapse;\n    padding: 10px;\n  }\n\n  & th {\n    background-color: #f5f5f5;\n  }\n}\n\n.tag-table {\n  width: 100%;\n  border-spacing: 5px;\n  text-align: left;\n\n  &,\n  & th,\n  & td {\n    border: 0.8px solid #ccc;\n    border-collapse: collapse;\n    padding: 5px;\n  }\n\n  & th {\n    background-color: none;\n  }\n}\n\n.text-center {\n  text-align: center;\n}\n",".inline-block {\n  display: inline-block;\n}\n\n.text-left {\n  text-align: left;\n}\n\n.text-right {\n  text-align: right;\n}\n\n.w-50 {\n  width: 49%;\n}\n\n.inline {\n  display: inline-block;\n}\n\n.meta-label {\n  display: inline-block;\n  font-weight: bold;\n  margin-bottom: 5px;\n}\n\n.meta-container {\n  display: block;\n  margin-top: 20px;\n}\n","/**************************/\n/* Feature CSS */\n/**************************/\n\n.section-features {\n  padding: 9.6rem 0;\n}\n\n.feature {\n  box-shadow: 0 2.4rem 4.8rem rgba(0, 0, 0, 0.075);\n  border-radius: 11px;\n  overflow: hidden;\n  transition: all 0.4s;\n}\n\n/* card action */\n.feature:hover {\n  transform: translateY(-1.2rem);\n  box-shadow: 0 3.2rem 6.4rem rgba(0, 0, 0, 0.06);\n}\n\n/* content backgrpund */\n.feature-content {\n  font-size: 0.9rem; /* 1.8 */\n  line-height: 1.8;\n  align-items: center;\n  padding: 1.6rem 2.4rem 2.4rem 2.4rem;\n  /* 3.2rem 4.8rem 4.8rem 4.8rem;*/\n}\n\n.feature-cards {\n  padding: 1.6rem 2.4rem 2.4rem 2.4rem;\n}\n\n.feature-tags {\n  margin-bottom: 1.2rem; /* 1.2rem */\n  display: flex;\n  gap: 0.4rem;\n}\n\n.feature-dashboard-tags {\n  margin-top: 2.2rem; /* 1.2rem */\n  margin-bottom: 2.2rem; /* 1.2rem */\n  display: flex;\n  gap: 0.4rem;\n}\n\n.feature-hidden {\n  margin-bottom: 1.2rem;\n  gap: 0.4rem;\n}\n\n.feature-name {\n  font-size: 1.2rem; /* 2.4 */\n  color: #333;\n  font-weight: 600;\n  margin-bottom: 1.6rem; /* 3.2 */\n}\n\n.feature-info {\n  font-size: 0.9rem; /*1.8 */\n  line-height: 1.6; /*1.8 */\n}\n\n.feature-attributes {\n  list-style: none;\n  display: flex;\n  flex-direction: column;\n  gap: 0.2rem; /* 2 */\n}\n\n.feature-attribute {\n  font-size: 1rem; /* 1.8 */\n  display: flex;\n  align-items: center;\n  gap: 0.8rem; /* 1.6 */\n}\n\n.feature-icon {\n  height: 2.4rem;\n  width: 2.4rem;\n  color: #e67e22;\n}\n\n.feature-img {\n  width: 100%;\n}\n\n.call-to-action {\n  text-align: center;\n  margin-top: 2.4rem; /* 4.8 */\n}\n\n.all-features {\n  text-align: center;\n  font-size: 1rem; /* 1.8 */\n}\n\n/* pagination  */\n.page-link {\n  position: relative;\n  display: block;\n  padding: 0.5rem 0.75rem;\n  margin-left: -1px;\n  line-height: 1.25;\n  color: #555;\n  background-color: #fae5d3;\n  border: 2px solid rgb(255, 255, 255);\n  border-radius: 11px;\n}\n\n/**************************/\n/* Card CSS no movement */\n/**************************/\n\n.card-content {\n  box-shadow: 0 2.4rem 4.8rem rgba(0, 0, 0, 0.075);\n  border-radius: 11px;\n  overflow: hidden;\n  transition: all 0.4s;\n}\n\n/**************************/\n/* Admin Notice */\n/**************************/\n\n.notice-action-button {\n  float: right;\n  margin-top: -66px;\n}\n\n/**************************/\n/* Order API */\n/**************************/\n\n/* action span */\n.action-tags {\n  margin-bottom: 1.2rem;\n  display: flex;\n  flex-wrap: wrap;\n  gap: 0.8rem 0.2rem;\n}\n\n.tag-item {\n  flex: 0 0 calc(50% - 0.1em);\n  display: flex;\n  // align-items: center;\n  // gap: 0.4rem;\n  // box-sizing: border-box;\n  flex-direction: column;\n  box-sizing: border-box;\n}\n\n.tag-wrapper {\n  display: flex;\n  align-items: center;\n  gap: 0.4rem;\n  margin-bottom: 0.3rem;\n}\n\n.tag-wrapper .tag {\n  flex-shrink: 0;\n  white-space: nowrap;\n}\n\n.tag-wrapper .image-container {\n  flex-shrink: 0;\n}\n\n.tag-wrapper .image-container img {\n  display: block;\n}\n\n.tag-desc {\n  margin: 0;\n  font-size: 0.85rem;\n  color: #666;\n  line-height: 1.4;\n  word-break: break-word;\n}\n\n/**************************/\n/* API input form  */\n/**************************/\n\n.api-input-form {\n  display: grid;\n  /* grid-template-columns: 0.5fr 1fr; */\n  border-radius: 11px;\n  overflow: hidden;\n  text-align: left;\n  /* padding: 1.8rem 0rem 1.8rem 1.8rem; */\n  padding: 0px 0px 18px 0px;\n  /* font-size: 1.8rem; */\n  font-size: 18px;\n  line-height: 1.8;\n}\n\n.api-input-form label {\n  /* display: block; */\n  /* font-size: 1.6rem; */\n  font-size: 16px;\n  font-weight: 500;\n  /*margin-bottom: 1.2rem; */\n  margin-bottom: 12px;\n  margin-top: 12px;\n}\n\n.api-input-form input,\n.api-input-form textarea,\n.api-input-form select {\n  width: 60%;\n  /* padding: 0.7rem;\n  font-size: 1.5rem; */\n  padding: 7px;\n  font-size: 15px;\n  font-family: inherit;\n  color: inherit;\n  border-radius: 9px;\n  background-color: #fdf2e9;\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n\n.api-input-form input::placeholder,\n.api-input-form textarea::placeholder {\n  color: #aaa;\n}\n\n.api-input-form *:focus {\n  outline: none;\n  /* box-shadow: 0 0 0 0.8rem rgba(253, 242, 233, 0.5); */\n  box-shadow: 0 0 0 16px rgba(253, 242, 233, 0.5);\n}\n\n/**************************/\n/* Advance mode */\n/**************************/\n\n.adv-box-container {\n  display: flex;\n  flex-direction: row;\n  padding: 0px 0px;\n}\n\n.adv-box {\n  width: 350px;\n}\n\n.adv-pre {\n  width: 650px;\n}\n\n.adv-box-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  margin: 0 10px 10px;\n}\n\n.adv-box-title {\n  font-weight: bold;\n  font-size: 0.9rem; /* 1.8 */\n  margin: 0;\n}\n\n.adv-box-table-container {\n  height: 250px;\n  margin-bottom: 15px;\n  overflow: auto;\n  border: 1px solid #bbb;\n  border-radius: 5px;\n}\n\n/* Idle */\n.adv-minus-btn {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: 0.4rem;\n}\n\n/* Delete button */\n.adv-box-btn {\n  border-radius: 5px;\n  transition: background-color 0.15s ease-in-out;\n  user-select: none;\n  border: none;\n  cursor: pointer;\n  font-size: 14px;\n  height: 35px;\n}\n\n.adv-box-btn.circle {\n  border-radius: 50px;\n}\n\n/* Button icon */\n.adv-box-btn-icon {\n  height: 3px;\n  width: 12px;\n  border-radius: 5px;\n  background-color: white;\n}\n\n.adv-box-btn-delete {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  background-color: #e53c4a;\n  height: 22px;\n  width: 22px;\n}\n\n.adv-box-btn-delete:hover {\n  background-color: #db3240;\n}\n\n.adv-box-btn-delete:active {\n  background-color: #cc2331;\n}\n\n.adv-box td .adv-box-btn-delete {\n  margin: auto;\n}\n\n.adv-box-footer {\n  display: flex;\n  flex-direction: column;\n}\n\n.adv-box-total {\n  flex: 1;\n  font-size: 14px;\n  font-weight: bold;\n  margin: 0 10px 15px;\n  padding: 0;\n  text-align: right;\n}\n\n/**************************/\n/* Tooltips*/\n/**************************/\n\n// .image-container {\n//   position: relative;\n//   display: inline-block;\n// }\n\n// .image-info {\n//   display: none;\n//   /* position: absolute; */\n//   position: absolute;\n//   background-color: #fff;\n//   padding: 1px;\n//   border: 1px solid #ccc;\n//   border-radius: 5px;\n// }\n\n// .image-container:hover .image-info {\n//   display: block;\n// }\n\n.api-label {\n  display: flex;\n  align-items: center; // 文字與圖片垂直置中\n  gap: 6px; // 文字與圖片之間的間距\n  font-weight: 500;\n  cursor: default;\n}\n\n/* 圖片 + info 的容器 */\n.image-wrapper {\n  position: relative;\n  display: inline-flex;\n  align-items: center;\n}\n\n.image-info {\n  display: none;\n  position: absolute;\n  left: 100%; // 貼在圖片右側\n  top: 50%;\n  transform: translateY(-50%);\n  margin-left: 10px; // 留出箭頭空間\n  background: #fff;\n  padding: 8px 12px;\n  border: 1px solid #ccc;\n  border-radius: 5px;\n  font-size: 13px;\n  white-space: nowrap;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);\n  z-index: 10;\n\n  /* 小箭頭(左側指向圖片) */\n  &::before {\n    content: \"\";\n    position: absolute;\n    top: 50%;\n    left: -16px; // 箭頭寬度\n    transform: translateY(-50%);\n    border: 8px solid transparent;\n    border-right-color: #ccc; // 外框箭頭(與邊框同色)\n  }\n\n  /* 內層白色箭頭(蓋掉邊框,讓看起來乾淨) */\n  &::after {\n    content: \"\";\n    position: absolute;\n    top: 50%;\n    left: -14px; // 比外箭頭內縮 1px\n    transform: translateY(-50%);\n    border: 7px solid transparent;\n    border-right-color: #fff; // 填滿背景色\n    z-index: 1;\n  }\n}\n\n/* Hover 時顯示 */\n.image-wrapper:hover .image-info {\n  display: block;\n}\n\n/**************************/\n/* Idle */\n/**************************/\n\n.aa-legend {\n  list-style-type: none;\n  margin: 17rem 0rem 0rem 5rem;\n}\n\n.aa-legend-item {\n  display: flex;\n  align-items: center;\n  margin-bottom: 10px;\n  padding: 0;\n}\n\n.aa-legend-description {\n  margin: 0 0 0 10px;\n}\n\n.aa-legend-bullet {\n  width: 22px;\n  height: 22px;\n  border-radius: 5px 5px 0 0;\n}\n\n.color1 {\n  color: white;\n  background-color: #277da1;\n}\n.color2 {\n  color: white;\n  background-color: #43aa8b;\n}\n.color3 {\n  color: white;\n  background-color: #f8961e;\n}\n","/* Scroll control */\n.scroll {\n  /* background-color: #e9ecef;*/\n  padding: 0px;\n  /* How elements that don't fit into container appear */\n  overflow: auto;\n  display: flex;\n  flex-direction: column;\n  gap: 40px;\n}\n/* Api Tools Section*/\n.pretty {\n  background-color: #adb5bd;\n  flex-shrink: 0;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n.pretty.sendapi {\n  height: 555px;\n}\n\n.pretty.filterapi {\n  height: 222px;\n  width: 777px;\n}\n\n.pretty.manageapi {\n  height: 444px;\n}\n\n/* Order Api Section*/\n.pretty.api {\n  height: 333px;\n}\n\n.pretty.advance {\n  height: 250px;\n  color: lightblue;\n}\n\n.pretty.props {\n  height: 333px;\n  align-items: left;\n}\n/* Hide pretty */\n.json {\n  display: none;\n}\n",".container {\n  /* 1140px */\n  max-width: 80rem;\n  /* max-width: 80rem;\n  /*120rem*/\n  padding: 0 3.2rem;\n  margin: 0 auto;\n}\n\n.grid {\n  display: grid;\n  column-gap: 2.2rem; /* 6.4 */\n  row-gap: 9.6rem;\n  /* margin-bottom: 9.6rem; */\n}\n\n/*\n.grid:not(:last-child) {\n  margin-bottom: 9.6rem;\n}\n*/\n.grid--2-cols {\n  grid-template-columns: repeat(2, 1fr);\n}\n\n.grid--3-cols {\n  grid-template-columns: repeat(3, 1fr);\n}\n\n.grid--4-cols {\n  grid-template-columns: repeat(4, 1fr);\n}\n\n.grid--5-cols {\n  grid-template-columns: repeat(5, 1fr);\n}\n\n.grid--center-v {\n  align-items: center;\n}\n\n/**************************/\n/* HEADER */\n/**************************/\n\n.header {\n  background: #fff;\n  box-sizing: border-box;\n  padding: 0;\n  position: fixed;\n  width: calc(100% - 160px);\n  top: 32px;\n  z-index: 1001;\n}\n\n.header-title {\n  padding: 1.2rem 0rem 1.2rem 0rem;\n}\n\n/**************************/\n/* General */\n/**************************/\n\n.heading-primary,\n.heading-secondary,\n.heading-tertiary {\n  font-weight: 700;\n  color: #333;\n  /* color: #45260a; */\n  /* color: #343a40; */\n  letter-spacing: -0.5px;\n}\n\n.heading-primary {\n  font-size: 5.2rem;\n  line-height: 1.05;\n  margin-bottom: 3.2rem;\n}\n\n.heading-secondary {\n  font-size: 4.4rem;\n  line-height: 1.2;\n  margin-bottom: 9.6rem;\n}\n\n.heading-tertiary {\n  font-size: 3rem;\n  line-height: 1.2;\n  margin-bottom: 3.2rem;\n}\n\n.subheading {\n  display: block;\n  font-size: 1.6rem;\n  font-weight: 500;\n  color: #cf711f;\n  text-transform: uppercase;\n  margin-bottom: 1.6rem;\n  letter-spacing: 0.75px;\n}\n\n.list {\n  list-style: none;\n  display: flex;\n  flex-direction: column;\n  gap: 1.6rem;\n}\n\n.list-item {\n  font-size: 1.8rem;\n  display: flex;\n  align-items: center;\n  gap: 1.6rem;\n}\n\n.list-icon {\n  width: 3rem;\n  height: 3rem;\n  color: #e67e22;\n}\n\n*:focus {\n  outline: none;\n  /* outline: 4px dotted #e67e22; */\n  /* outline-offset: 8px; */\n  box-shadow: 0 0 0 0.8rem rgba(230, 125, 34, 0.5);\n}\n\n/* HELPER/SETTINGS CLASSES */\n.margin-right-sm {\n  margin-right: 1.6rem !important;\n}\n\n.margin-bottom-md {\n  margin-bottom: 4.8rem !important;\n}\n\n.center-text {\n  text-align: center;\n}\n\nstrong {\n  font-weight: 500;\n}\n\n/**************************/\n/* SECTION */\n/**************************/\n\n.section-pricing {\n  padding: 9.6rem 0;\n}\n\n.pricing-plan {\n  border-radius: 11px;\n\n  width: 75%;\n}\n\n.pricing-plan--starter {\n  justify-self: end;\n  border: 2px solid #fdf2e9;\n  padding: 4.6rem;\n}\n\n.pricing-plan--complete {\n  background-color: #fdf2e9;\n  padding: 4.8rem;\n  position: relative;\n  overflow: hidden;\n}\n\n.pricing-plan--complete::after {\n  content: \"Best value\";\n  position: absolute;\n  top: 6%;\n  right: -18%;\n\n  text-transform: uppercase;\n  font-size: 1.4rem;\n  font-weight: 700;\n  color: #333;\n  background-color: #ffd43b;\n  padding: 0.8rem 8rem;\n  transform: rotate(45deg);\n}\n\n.plan-header {\n  text-align: center;\n  margin-bottom: 4.8rem;\n}\n\n.plan-name {\n  color: #cf711f;\n  font-weight: 600;\n  font-size: 2rem;\n  text-transform: uppercase;\n  letter-spacing: 0.75;\n  margin-bottom: 3.2rem;\n}\n\n.plan-price {\n  font-size: 6.2rem;\n  font-weight: 600;\n  color: #333;\n  margin-bottom: 1.6rem;\n}\n\n.plan-price span {\n  font-size: 3rem;\n  font-weight: 500;\n  margin-right: 0.8rem;\n}\n\n.plan-text {\n  font-size: 1.6rem;\n  line-height: 1.6;\n  color: #6f6f6f;\n}\n\n.plan-sing-up {\n  text-align: center;\n  margin-top: 4.8rem;\n}\n\n.plan-details {\n  font-size: 1.6rem;\n  line-height: 1.6;\n  text-align: center;\n}\n\n.feature-icon {\n  color: #e67e22;\n  height: 3.2rem;\n  width: 3.2rem;\n  background-color: #fdf2e9;\n  margin-bottom: 3.2rem;\n  padding: 1.6rem;\n  border-radius: 50%;\n}\n\n.feature-title {\n  font-size: 2.4rem;\n  color: #333;\n  font-weight: 700;\n  margin-bottom: 1.6rem;\n}\n\n.feature-text {\n  font-size: 1.8rem;\n  line-height: 1.8;\n}\n","/* desert scheme ported from vim to google prettify */\r\npre.prettyprint {\r\n  display: block;\r\n  background-color: #333;\r\n}\r\npre .nocode {\r\n  background-color: none;\r\n  color: #000;\r\n}\r\npre .str {\r\n  color: #ffa0a0;\r\n} /* string  - pink */\r\npre .kwd {\r\n  color: #f0e68c;\r\n  font-weight: bold;\r\n}\r\npre .com {\r\n  color: #87ceeb;\r\n} /* comment - skyblue */\r\npre .typ {\r\n  color: #98fb98;\r\n} /* type    - lightgreen */\r\npre .lit {\r\n  color: #cd5c5c;\r\n} /* literal - darkred */\r\npre .pun {\r\n  color: #fff;\r\n} /* punctuation */\r\npre .pln {\r\n  color: #fff;\r\n} /* plaintext */\r\npre .tag {\r\n  color: #f0e68c;\r\n  font-weight: bold;\r\n} /* html/xml tag    - lightyellow */\r\npre .atn {\r\n  color: #bdb76b;\r\n  font-weight: bold;\r\n} /* attribute name  - khaki */\r\npre .atv {\r\n  color: #ffa0a0;\r\n} /* attribute value - pink */\r\npre .dec {\r\n  color: #98fb98;\r\n} /* decimal         - lightgreen */\r\n\r\n/* Specify class=linenums on a pre to get line numbering */\r\nol.linenums {\r\n  margin-top: 0;\r\n  margin-bottom: 0;\r\n  color: #aeaeae;\r\n} /* IE indents via margin-left */\r\nli.L0,\r\nli.L1,\r\nli.L2,\r\nli.L3,\r\nli.L5,\r\nli.L6,\r\nli.L7,\r\nli.L8 {\r\n  list-style-type: none;\r\n}\r\n/* Alternate shading for lines */\r\nli.L1,\r\nli.L3,\r\nli.L5,\r\nli.L7,\r\nli.L9 {\r\n}\r\n\r\n@media print {\r\n  pre.prettyprint {\r\n    background-color: none;\r\n  }\r\n  pre .str,\r\n  code .str {\r\n    color: #060;\r\n  }\r\n  pre .kwd,\r\n  code .kwd {\r\n    color: #006;\r\n    font-weight: bold;\r\n  }\r\n  pre .com,\r\n  code .com {\r\n    color: #600;\r\n    font-style: italic;\r\n  }\r\n  pre .typ,\r\n  code .typ {\r\n    color: #404;\r\n    font-weight: bold;\r\n  }\r\n  pre .lit,\r\n  code .lit {\r\n    color: #044;\r\n  }\r\n  pre .pun,\r\n  code .pun {\r\n    color: #440;\r\n  }\r\n  pre .pln,\r\n  code .pln {\r\n    color: #000;\r\n  }\r\n  pre .tag,\r\n  code .tag {\r\n    color: #006;\r\n    font-weight: bold;\r\n  }\r\n  pre .atn,\r\n  code .atn {\r\n    color: #404;\r\n  }\r\n  pre .atv,\r\n  code .atv {\r\n    color: #060;\r\n  }\r\n}\r\n","/***********************************************************/\n/* ==================== Global Color ===================== */\n/***********************************************************/\n\n/*\nPrimary         #f34a4a\nSecondary       #4a4af3\nText            #b2b2fa\nAccent          #f34a4a\nBG Primary      #11111A\nBG Secondary    #1B1B28\nHeading         #fff\nButton Text     #11111A\nTertiary        #2F2F48\n*/\n\n/* Light Mode(default */\n:root {\n  --anyapi-bg: #f6f7f7;\n  --anyapi-card: #fff;\n  --anyapi-primary: #5d5fef;\n  --anyapi-primary-hover: #4c4ddc;\n  --anyapi-text: #1a1a2e;\n  --anyapi-success: #00c48c;\n  --anyapi-danger: #ff6b6b;\n  // --anyapi-border: #e8e8ff;\n  // --anyapi-text-muted: #666699;\n}\n\n.dark-mode {\n  --anyapi-bg: #0f1121;\n  --anyapi-card: #161827;\n  --anyapi-primary: #7b7cff;\n  --anyapi-primary-hover: #9697ff;\n  --anyapi-text: ##b2b2fa;\n  --anyapi-success: #00d4a0;\n  --anyapi-danger: #ff6b9d;\n  // --anyapi-border: #23273a;\n  // --anyapi-text-muted: #9494b8;\n}\n\n/***********************************************************/\n/* ====================== Dashboard ====================== */\n/***********************************************************/\n\n#anyapi-review-banner {\n  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n  color: white;\n  padding: 20px 30px;\n  border-radius: 20px;\n  margin: 30px 0;\n  box-shadow: 0 20px 40px rgba(102, 126, 234, 0.3),\n    0 10px 20px rgba(118, 75, 162, 0.2);\n  position: relative;\n  overflow: hidden;\n  animation: slideDown 0.6s ease-out;\n}\n\n#anyapi-review-banner::before {\n  content: \"\";\n  position: absolute;\n  top: 0;\n  left: -100%;\n  width: 100%;\n  height: 100%;\n  background: linear-gradient(\n    90deg,\n    transparent,\n    rgba(255, 255, 255, 0.1),\n    transparent\n  );\n  animation: shimmer 3s infinite;\n}\n\n.review-content {\n  display: flex;\n  align-items: center;\n  gap: 20px;\n  max-width: 1000px;\n  margin: 0 auto;\n}\n\n.review-icon {\n  font-size: 32px;\n  animation: float 3s ease-in-out infinite;\n}\n\n.review-text h3 {\n  margin: 0 0 4px 0;\n  font-size: 22px;\n  font-weight: 700;\n}\n\n.review-text p {\n  margin: 0 0 8px 0;\n  opacity: 0.9;\n  font-size: 16px;\n}\n\n.review-stars {\n  font-size: 20px;\n  margin-top: 4px;\n  animation: sparkle 2s ease-in-out infinite;\n}\n\n.review-actions {\n  display: flex;\n  gap: 12px;\n  margin-left: auto;\n}\n\n.review-actions .button {\n  padding: 12px 24px !important;\n  font-weight: 600 !important;\n  border-radius: 12px !important;\n  transition: all 0.3s ease !important;\n}\n\n.review-actions .button-primary {\n  background: #fff !important;\n  color: #667eea !important;\n  box-shadow: 0 8px 20px rgba(255, 255, 255, 0.3) !important;\n}\n\n.review-actions .button-primary:hover {\n  transform: translateY(-2px);\n  box-shadow: 0 12px 30px rgba(255, 255, 255, 0.4) !important;\n}\n\n.review-close {\n  position: absolute;\n  top: 12px;\n  right: 20px;\n  background: none;\n  border: none;\n  color: rgba(255, 255, 255, 0.8);\n  font-size: 24px;\n  width: 32px;\n  height: 32px;\n  border-radius: 50%;\n  cursor: pointer;\n  transition: all 0.3s ease;\n}\n\n.review-close:hover {\n  background: rgba(255, 255, 255, 0.2);\n  color: white;\n  transform: rotate(90deg);\n}\n\n/* Animations */\n@keyframes slideDown {\n  from {\n    opacity: 0;\n    transform: translateY(-30px);\n  }\n  to {\n    opacity: 1;\n    transform: translateY(0);\n  }\n}\n\n@keyframes shimmer {\n  0% {\n    left: -100%;\n  }\n  100% {\n    left: 100%;\n  }\n}\n\n@keyframes float {\n  0%,\n  100% {\n    transform: translateY(0px);\n  }\n  50% {\n    transform: translateY(-10px);\n  }\n}\n\n@keyframes sparkle {\n  0%,\n  100% {\n    opacity: 1;\n  }\n  50% {\n    opacity: 0.7;\n  }\n}\n\n/* Responsive */\n@media (max-width: 768px) {\n  .review-content {\n    flex-direction: column;\n    text-align: center;\n    gap: 16px;\n  }\n  .review-actions {\n    margin-left: 0 !important;\n    justify-content: center;\n    flex-wrap: wrap;\n  }\n}\n\n#anyapi-dashboard {\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n  background: var(--anyapi-bg);\n  min-height: 80vh;\n  padding: 20px;\n  border-radius: 8px;\n}\n\n#anyapi-last-updated {\n  font-size: 13px;\n  color: #646970;\n  margin-top: 10px;\n  margin-left: 15px;\n  white-space: nowrap;\n  float: right;\n}\n\n/* Main Layout (Left Content + Right Info */\n.anyapi-main-grid {\n  display: grid;\n  grid-template-columns: 1fr 320px;\n  gap: 30px;\n  margin-top: 20px;\n}\n@media (max-width: 1200px) {\n  .anyapi-main-grid {\n    grid-template-columns: 1fr;\n  }\n  .anyapi-sidebar {\n    order: -1;\n  }\n}\n\n.anyapi-grid {\n  display: grid;\n  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n  gap: 20px;\n  margin-bottom: 30px;\n}\n\n.anyapi-card {\n  // background: #fff;\n  background: var(--anyapi-card);\n  padding: 24px;\n  border-radius: 12px;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n  transition: transform 0.2s;\n}\n\n.anyapi-card:hover {\n  transform: translateY(-4px);\n}\n\n.anyapi-card h3 {\n  margin: 0 0 12px;\n  font-size: 14px;\n  color: #646970;\n  text-transform: uppercase;\n  letter-spacing: 0.5px;\n}\n\n.anyapi-card .value {\n  font-size: 32px;\n  font-weight: 700;\n  color: #1d2327;\n  margin: 8px 0 0;\n}\n\n.anyapi-card .change {\n  font-size: 14px;\n}\n\n/* Status */\n.positive {\n  // color: #00a32a;\n  color: var(--anyapi-success);\n}\n\n.warning {\n  color: #dba617;\n  // color: var(--anyapi-success);\n}\n\n.negative {\n  // color: #d63638;\n  color: var(--anyapi-danger);\n}\n\n/* Chart Section */\n.anyapi-charts-row {\n  display: grid;\n  grid-template-columns: 2fr 1fr;\n  gap: 20px;\n  margin-bottom: 30px;\n}\n\n@media (max-width: 960px) {\n  .anyapi-charts-row {\n    grid-template-columns: 1fr;\n  }\n}\n\n.anyapi-chart-card {\n  // background: #fff;\n  background: var(--anyapi-card);\n  padding: 24px;\n  border-radius: 12px;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.anyapi-chart-card h2 {\n  margin-top: 0;\n  font-size: 18px;\n}\n\n/* Logs Section */\n#anyapi-logs-section {\n  // background: #fff;\n  background: var(--anyapi-card);\n  border-radius: 12px;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n  overflow: hidden;\n}\n\n#anyapi-logs-header {\n  padding: 20px 24px;\n  border-bottom: 1px solid #e2e4e7;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n}\n\n#anyapi-logs-section .logs-controls {\n  display: flex;\n  gap: 12px;\n  align-items: center;\n}\n\n#anyapi-log-search {\n  padding: 10px 16px;\n  border: 1px solid #ddd;\n  border-radius: 12px;\n  width: 300px;\n  max-width: 100%;\n}\n\n.method-post {\n  background: #7c3aed;\n  color: white;\n  padding: 4px 10px;\n  border-radius: 8px;\n  font-size: 11px;\n  font-weight: bold;\n}\n\n.status-badge {\n  padding: 4px 10px;\n  border-radius: 8px;\n  font-weight: bold;\n  font-size: 12px;\n}\n\n.status-badge.success {\n  background: #10b981;\n  color: white;\n}\n\n.status-badge.warning {\n  background: #f59e0b;\n  color: white;\n}\n\n.status-badge.error {\n  background: #ef4444;\n  color: white;\n}\n\n.endpoint code {\n  font-size: 12px;\n  background: #f3f4f6;\n  padding: 2px 6px;\n  border-radius: 4px;\n}\n\n.payload pre {\n  margin: 0;\n  font-size: 11px;\n  color: #666;\n  white-space: pre-wrap;\n  word-break: break-all;\n}\n\n#anyapi-logs-footer {\n  display: flex;\n  justify-content: space-between;\n  margin-top: 16px;\n  font-size: 14px;\n  color: #666;\n}\n\n#anyapi-log-search {\n  padding: 8px 12px;\n  border: 1px solid #ddd;\n  border-radius: 6px;\n  width: 300px;\n}\n\n#anyapi-logs-table {\n  width: 100%;\n  border-collapse: collapse;\n}\n\n#anyapi-logs-table th {\n  background: #f9fafb;\n  text-align: left;\n  padding: 12px 16px;\n  font-weight: 600;\n  color: #1d2327;\n}\n\n#anyapi-logs-table td {\n  padding: 12px 16px;\n  border-top: 1px solid #e2e4e7;\n  font-size: 14px;\n}\n\n/* Idle CSSS */\n/* Status */\n.status-2xx {\n  // color: #00a32a;\n  color: var(--anyapi-success);\n}\n\n.status-4xx {\n  // color: #d63638;\n  color: var(--anyapi-danger);\n}\n\n.status-5xx {\n  // color: #d63638;\n  color: var(--anyapi-danger);\n  font-weight: bold;\n}\n\n/* Idle CSS */\n.payload {\n  font-family: SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n  font-size: 12px;\n  color: #646970;\n  max-width: 300px;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n/* Idle CSS */\n.loading {\n  text-align: center;\n  padding: 60px;\n  font-size: 18px;\n  color: #646970;\n}\n\n/* Right Sidebar & Cards */\n.anyapi-sidebar {\n  display: flex;\n  flex-direction: column;\n  gap: 20px;\n}\n\n.anyapi-sidebar-card {\n  // background: #fff;\n  background: var(--anyapi-card);\n  padding: 20px;\n  border-radius: 12px;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n  border: 1px solid #e2e4e7;\n}\n\n.anyapi-sidebar-card h3 {\n  margin: 0 0 12px;\n  font-size: 16px;\n  color: #1d2327;\n}\n\n/* Plugin Version Card */\n.dashicons-yes-alt {\n  color: #00a32a;\n}\n\n.dashicons-warning {\n  color: #dba617;\n}\n\n.dashicons-update {\n  color: #f56e14;\n  animation: anyapi-spin 2s linear infinite;\n}\n\n.anyapi-new-version-notice {\n  font-size: 12px;\n  color: #d63638;\n  font-weight: bold;\n  margin: 8px 0 4px;\n\n  small {\n    font-weight: normal;\n    color: #666;\n  }\n}\n/* Update details box */\n.anyapi-update-box {\n  margin: 10px 0;\n  padding: 12px;\n  background: #fff8e5;\n  border-left: 4px solid #ffb900;\n  font-size: 11px;\n  line-height: 1.4;\n\n  strong {\n    font-size: 11px;\n    display: block;\n    margin-bottom: 4px;\n  }\n\n  ul {\n    margin: 6px 0 8px;\n    padding-left: 18px;\n    line-height: 1.4;\n\n    li {\n      margin-bottom: 2px;\n    }\n  }\n\n  .anyapi-update-button {\n    background: #d63638;\n    border-color: #d63638;\n    box-shadow: none;\n    text-shadow: none;\n    color: #fff !important;\n\n    &:hover,\n    &:focus {\n      background: #c02a2a;\n      border-color: #c02a2a;\n    }\n  }\n\n  .anyapi-view-details {\n    margin-left: 8px;\n    font-size: 10px;\n    color: #666;\n\n    &:hover {\n      color: #d63638;\n    }\n  }\n}\n\n.anyapi-latest-text {\n  font-size: 12px;\n  color: #646970;\n}\n\n/* Global */\n@keyframes anyapi-spin {\n  from {\n    transform: rotate(0deg);\n  }\n  to {\n    transform: rotate(360deg);\n  }\n}\n\n/* Upgrade Card */\n.anyapi-upgrade {\n  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n  color: white;\n  position: relative;\n  overflow: hidden;\n}\n\n.anyapi-upgrade::before {\n  content: \"\";\n  position: absolute;\n  top: -50%;\n  right: -50%;\n  width: 200%;\n  height: 200%;\n  background: rgba(255, 255, 255, 0.1);\n  transform: rotate(30deg);\n}\n\n.anyapi-upgrade h3,\n.anyapi-upgrade p,\n.anyapi-upgrade li {\n  color: white;\n}\n\n.anyapi-upgrade .badge {\n  position: absolute;\n  top: 12px;\n  right: 12px;\n  background: #ffb900;\n  color: #000;\n  padding: 4px 10px;\n  border-radius: 20px;\n  font-size: 11px;\n  font-weight: bold;\n}\n\n.anyapi-upgrade .features {\n  margin: 16px 0;\n  padding-left: 20px;\n}\n\n.anyapi-upgrade .features li {\n  margin-bottom: 8px;\n  position: relative;\n}\n\n.anyapi-upgrade .features li::before {\n  content: \"✓\";\n  position: absolute;\n  left: -20px;\n}\n\n.anyapi-upgrade .button-primary {\n  background: white;\n  color: #667eea;\n  font-weight: bold;\n}\n\n.anyapi-button-block {\n  display: block;\n  text-align: center;\n}\n\n.anyapi-save {\n  text-align: center;\n  margin-top: 12px;\n  font-size: 14px;\n  opacity: 0.9;\n}\n\n/* Quick Links Card */\n.anyapi-quick-links {\n  list-style: none;\n  padding: 0;\n  margin: 0;\n}\n\n.anyapi-quick-links li {\n  margin-bottom: 8px;\n}\n\n.anyapi-quick-links a {\n  color: #0073aa;\n  text-decoration: none;\n}\n\n.anyapi-quick-links a:hover {\n  text-decoration: underline;\n}\n\n/* Bottom Cards */\n.anyapi-bottom-grid {\n  display: grid;\n  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));\n  gap: 20px;\n  margin-top: 40px;\n}\n.anyapi-info-card {\n  // background: #fff;\n  background: var(--anyapi-card);\n  padding: 24px;\n  border-radius: 12px;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n  border: 1px solid #e2e4e7;\n  text-align: center;\n}\n.anyapi-info-card h3 {\n  margin: 0 0 12px;\n  color: #1d2327;\n}\n.anyapi-info-card p {\n  color: #646970;\n  margin-bottom: 20px;\n  line-height: 1.5;\n}\n.anyapi-info-card .button {\n  width: 100%;\n}\n\n/***********************************************************/\n/* ================== Dashboard Header =================== */\n/***********************************************************/\n\n#anyapi-dashboard-header {\n  position: relative;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  min-height: 64px;\n  padding: 0 24px; /* <- padding -> */\n  margin-bottom: 28px;\n  flex-wrap: wrap;\n  gap: 16px;\n}\n\n.anyapi-header-left {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n}\n\n.anyapi-logo {\n  height: 40px;\n  width: auto;\n}\n\n.anyapi-logo svg {\n  border-radius: 8px;\n  transition: transform 0.2s;\n}\n.anyapi-logo:hover svg {\n  transform: scale(1.08);\n}\n\n.anyapi-header-right {\n  position: absolute;\n  right: 20px; /* ← 24px、20px、16px、30px */\n  top: 50%;\n  transform: translateY(-50%);\n}\n/* Responsive */\n@media (max-width: 782px) {\n  #anyapi-dashboard-header {\n    padding: 0 16px;\n  }\n  .anyapi-header-right {\n    right: 16px; /* 手機時可再縮一點 */\n  }\n}\n\n/***********************************************************/\n/* ================== Dark Mode Toggle =================== */\n/***********************************************************/\n\n#dark-mode-toggle {\n  position: relative;\n  width: 56px;\n  height: 28px;\n  background: #ccd0d5;\n  border-radius: 50px;\n  border: none;\n  cursor: pointer;\n  overflow: hidden;\n  transition: background 0.3s;\n}\n\n#dark-mode-toggle .toggle-ball {\n  position: absolute;\n  top: 4px;\n  left: 4px;\n  width: 20px;\n  height: 20px;\n  background: white;\n  border-radius: 50%;\n  transition: transform 0.3s;\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);\n}\n\n#dark-mode-toggle .sun-icon,\n#dark-mode-toggle .moon-icon {\n  position: absolute;\n  top: 6px;\n  font-size: 14px;\n  transition: opacity 0.3s;\n}\n\n#dark-mode-toggle .sun-icon {\n  left: 8px;\n  opacity: 1;\n}\n#dark-mode-toggle .moon-icon {\n  right: 8px;\n  opacity: 0;\n}\n\n/* Toggle Dark Mode */\n.dark-mode #dark-mode-toggle {\n  background: #6366f1;\n}\n\n.dark-mode #dark-mode-toggle .toggle-ball {\n  transform: translateX(28px);\n}\n\n.dark-mode #dark-mode-toggle .sun-icon {\n  opacity: 0;\n}\n\n.dark-mode #dark-mode-toggle .moon-icon {\n  opacity: 1;\n}\n\n.dark-mode {\n  background: #1e1e1e;\n  color: #e0e0e0;\n}\n\n.dark-mode #anyapi-dashboard,\n.dark-mode .anyapi-card,\n.dark-mode .chart-card,\n.dark-mode #logs-section,\n.dark-mode .anyapi-sidebar-card,\n.dark-mode .anyapi-info-card {\n  background: #2d2d2d;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);\n  border-color: #444;\n}\n\n.dark-mode .anyapi-card h3,\n.dark-mode .chart-card h2,\n.dark-mode #logs-table th,\n.dark-mode .anyapi-info-card h3 {\n  color: #a0a0a0;\n}\n\n.dark-mode .value,\n.dark-mode #logs-table td {\n  color: var(--anyapi-text);\n}\n\n.dark-mode #logs-table th {\n  background: #363636;\n}\n\n.dark-mode .status-2xx {\n  // color: #00e676;\n  color: var(--anyapi-success);\n}\n.dark-mode .status-4xx,\n.dark-mode .status-5xx {\n  // color: #ff5252;\n  color: var(--anyapi-danger);\n}\n","/* Integration 專屬樣式(加在原有 CSS 後) */\n:root {\n  /* 延續上次變數 */\n  --anyapi-purple: #7b68ee; /* 步驟紫色,從截圖提取 */\n  --anyapi-gray-light: #f8f9fa;\n  --anyapi-gray: #6c757d;\n}\n\n.dark-mode {\n  --anyapi-purple: #a78bfa;\n  --anyapi-gray-light: #2d3748;\n  --anyapi-gray: #a0aec0;\n}\n\n.integration-main {\n  display: grid;\n  grid-template-columns: 200px 1fr;\n  gap: 30px;\n  margin: 20px 0;\n}\n\n.steps-sidebar {\n  background: var(--anyapi-card);\n  border-radius: 12px;\n  padding: 20px;\n  height: fit-content;\n}\n\n.step-item {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 12px 0;\n  cursor: pointer;\n  transition: color 0.3s;\n}\n\n.step-item.active .step-number {\n  background: var(--anyapi-purple);\n  color: white;\n}\n\n.step-number {\n  width: 32px;\n  height: 32px;\n  border-radius: 50%;\n  background: var(--anyapi-gray-light);\n  display: grid;\n  place-items: center;\n  font-weight: bold;\n}\n\n.step-label {\n  font-size: 14px;\n  color: var(--anyapi-text-muted);\n}\n\n.integration-content {\n  position: relative;\n}\n\n.step-content {\n  display: none;\n  animation: fadeIn 0.3s;\n}\n\n.step-content.active {\n  display: block;\n}\n\n@keyframes fadeIn {\n  from {\n    opacity: 0;\n    transform: translateX(10px);\n  }\n  to {\n    opacity: 1;\n    transform: translateX(0);\n  }\n}\n\n.form-group {\n  margin-bottom: 24px;\n}\n\n.form-group label {\n  display: block;\n  margin-bottom: 8px;\n  font-weight: 600;\n  color: var(--anyapi-text);\n}\n\n.form-group input,\n.form-group select,\n.form-group textarea {\n  width: 100%;\n  padding: 12px;\n  border: 1px solid var(--anyapi-border);\n  border-radius: 8px;\n  background: var(--anyapi-card);\n  transition: border-color 0.3s;\n}\n\n.form-group input:focus,\n.form-group select:focus,\n.form-group textarea:focus {\n  outline: none;\n  border-color: var(--anyapi-primary);\n}\n\n.required {\n  color: var(--anyapi-danger);\n}\n\n.help-text {\n  color: var(--anyapi-text-muted);\n  font-size: 12px;\n}\n\n.filter-mode-toggle {\n  display: flex;\n  gap: 8px;\n  margin: 12px 0;\n}\n\n.mode-btn {\n  padding: 8px 16px;\n  border: 1px solid var(--anyapi-border);\n  background: var(--anyapi-card);\n  border-radius: 6px;\n  cursor: pointer;\n}\n\n.mode-btn.active {\n  background: var(--anyapi-primary);\n  color: white;\n  border-color: var(--anyapi-primary);\n}\n\n.json-preview {\n  background: #1e1e1e;\n  border-radius: 8px;\n  padding: 16px;\n  margin: 16px 0;\n  overflow: auto;\n}\n\n.json-preview pre {\n  margin: 0;\n  color: #f8f8f2;\n  font-family: \"Courier New\", monospace;\n  font-size: 14px;\n}\n\n.actions-grid {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 20px;\n  margin-bottom: 24px;\n}\n\n.action-card {\n  background: var(--anyapi-card);\n  padding: 20px;\n  border-radius: 12px;\n  border: 1px solid var(--anyapi-border);\n}\n\n.action-card h3 {\n  margin-top: 0;\n  color: var(--anyapi-text);\n}\n\n.action-card label {\n  display: block;\n  margin: 8px 0;\n  cursor: pointer;\n}\n\n.integration-footer {\n  display: flex;\n  justify-content: flex-end;\n  gap: 12px;\n  padding: 20px 0;\n  border-top: 1px solid var(--anyapi-border);\n}\n\n.preview-json-btn {\n  background: var(--anyapi-danger);\n  color: white;\n}\n\n/* 響應式 */\n@media (max-width: 960px) {\n  .integration-main {\n    grid-template-columns: 1fr;\n  }\n  .steps-sidebar {\n    order: -1;\n    display: flex;\n    justify-content: center;\n  }\n  .step-item {\n    flex-direction: column;\n    text-align: center;\n  }\n  .actions-grid {\n    grid-template-columns: 1fr;\n  }\n}\n\n/* API Status 專屬樣式 */\n#anyapi-status {\n  background: var(--anyapi-bg);\n  min-height: 100vh;\n}\n\n.anyapi-notice.success {\n  background: linear-gradient(90deg, #10b981 0%, #34d399 100%);\n  color: white;\n  padding: 16px 24px;\n  border-radius: 12px;\n  font-weight: 600;\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  margin: 20px 0;\n  box-shadow: 0 4px 20px rgba(16, 185, 129, 0.2);\n}\n\n.notice-actions {\n  display: flex;\n  gap: 8px;\n}\n\n.integration-card {\n  background: var(--anyapi-card);\n  border: 1px solid var(--anyapi-border);\n  border-radius: 16px;\n  overflow: hidden;\n  margin: 30px 0;\n  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.08);\n}\n\n.integration-row {\n  display: grid;\n  grid-template-columns: 100px 1fr 120px 1fr 100px 1fr;\n  gap: 16px;\n  padding: 24px;\n  align-items: center;\n  flex-wrap: wrap;\n}\n\n@media (max-width: 1280px) {\n  .integration-row {\n    grid-template-columns: 1fr 1fr;\n    gap: 20px;\n  }\n}\n\n@media (max-width: 782px) {\n  .integration-row {\n    grid-template-columns: 1fr;\n    text-align: center;\n  }\n}\n\n.badge {\n  padding: 8px 16px;\n  border-radius: 50px;\n  font-size: 13px;\n  font-weight: 700;\n  text-align: center;\n  white-space: nowrap;\n}\n\n.badge.purple {\n  background: #7b68ee;\n  color: white;\n}\n\n.badge.gray {\n  background: #e2e8f0;\n  color: #475569;\n}\n\n.code-snippet {\n  background: #1e1e1e;\n  color: #a6e22e;\n  padding: 12px 16px;\n  border-radius: 12px;\n  font-family: \"SFMono-Regular\", Consolas, monospace;\n  font-size: 13px;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n  max-width: 100%;\n}\n\n.dark-mode .code-snippet {\n  background: #2d2d2d;\n  color: #89ddff;\n}\n\n.status-action {\n  text-align: center;\n  margin: 40px 0;\n}\n\n.button-warning {\n  background: #f59e0b !important;\n  color: white !important;\n  padding: 14px 32px !important;\n  font-size: 16px;\n  border-radius: 12px;\n}\n\n.status-footer {\n  text-align: center;\n  margin: 60px 0 20px;\n}\n\n/* Dark Mode 增強 */\n.dark-mode .anyapi-notice.success {\n  background: linear-gradient(90deg, #059669 0%, #10b981 100%);\n}\n\n.dark-mode .integration-card {\n  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);\n}\n\n/* 完成頁 */\n.completion-wrapper {\n  text-align: center;\n  max-width: 900px;\n  margin: 0 auto;\n  padding: 20px;\n}\n.completion-header h2 {\n  font-size: 28px;\n  margin: 16px 0;\n  color: var(--anyapi-text);\n}\n.success-icon {\n  font-size: 64px;\n  color: #10b981;\n}\n.completion-actions {\n  margin: 30px 0;\n  display: flex;\n  gap: 12px;\n  justify-content: center;\n  flex-wrap: wrap;\n}\n.integration-card.standalone {\n  margin: 40px auto;\n  max-width: 100%;\n}\n.final-cta {\n  margin: 50px 0;\n}\n.button-hero {\n  padding: 18px 40px !important;\n  font-size: 18px !important;\n  border-radius: 16px;\n  box-shadow: 0 8px 25px rgba(245, 158, 11, 0.4);\n}\n.completion-footer {\n  margin-top: 60px;\n  display: flex;\n  gap: 20px;\n  justify-content: center;\n  flex-wrap: wrap;\n}\n\n/* */\n.test-api-section {\n  margin: 50px auto;\n  text-align: center;\n}\n\n.button-success {\n  background: linear-gradient(135deg, #10b981, #34d399) !important;\n  color: white !important;\n  border: none;\n  padding: 18px 40px !important;\n  font-size: 18px;\n  border-radius: 16px;\n  box-shadow: 0 10px 30px rgba(16, 185, 129, 0.4);\n  transition: all 0.3s;\n}\n\n.button-success:hover {\n  transform: translateY(-3px);\n  box-shadow: 0 15px 40px rgba(16, 185, 129, 0.5);\n}\n\n.button-success.loading {\n  opacity: 0.7;\n  cursor: not-allowed;\n  position: relative;\n}\n.button-success.loading::after {\n  content: \"\";\n  position: absolute;\n  width: 20px;\n  height: 20px;\n  border: 3px solid #fff;\n  border-top-color: transparent;\n  border-radius: 50%;\n  animation: spin 1s linear infinite;\n  right: 20px;\n}\n\n@keyframes spin {\n  to {\n    transform: rotate(360deg);\n  }\n}\n\n.test-result {\n  margin-top: 30px;\n  padding: 20px;\n  border-radius: 12px;\n  font-family: \"SFMono-Regular\", monospace;\n  font-size: 14px;\n  text-align: left;\n  max-width: 800px;\n  margin-left: auto;\n  margin-right: auto;\n  border: 1px solid;\n}\n\n.test-result.success {\n  background: #ecfdf5;\n  border-color: #10b981;\n  color: #065f46;\n}\n\n.test-result.error {\n  background: #fee2e2;\n  border-color: #ef4444;\n  color: #991b1b;\n}\n\n.dark-mode .test-result.success {\n  background: #064e3b;\n  color: #86efac;\n}\n.dark-mode .test-result.error {\n  background: #7f1d1d;\n  color: #fca5a5;\n}\n"]}
     1{
     2  "version": 3,
     3  "sources": [
     4    "modules/tabs.scss",
     5    "modules/button.scss",
     6    "modules/checkbox.scss",
     7    "modules/table.scss",
     8    "modules/form.scss",
     9    "modules/features.scss",
     10    "modules/pretty.scss",
     11    "modules/general.scss",
     12    "modules/desert.scss",
     13    "modules/ui-dashboard.scss",
     14    "modules/ui-orderapi.scss"
     15  ],
     16  "names": [],
     17  "mappings": "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",
     18  "file": "style.css",
     19  "sourcesContent": [
     20    ".nav-tabs,\n.nav-tabs-tools,\n.nav-tabs-filter,\n.nav-tabs-api,\n.nav-tabs-apiauth {\n  float: left;\n  width: 100%;\n  margin: 0;\n  list-style-type: none;\n  border-bottom: 1px solid transparent;\n\n  > li {\n    float: left;\n    margin-bottom: -1px;\n\n    > a {\n      margin-right: 2px;\n      line-height: 1.5;\n      padding: 10px;\n      border: 1px solid transparent;\n      border-radius: 4px 4px 0 0;\n      float: left;\n      text-decoration: none;\n\n      &:hover {\n        border-color: #eee #eee #ddd;\n      }\n    }\n\n    &.active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: #555;\n        cursor: default;\n        background-color: #fff;\n        border-color: transparent;\n      }\n    }\n  }\n}\n\n.tab-content > .tab-pane,\n.tab-content-tools > .tab-pane-tools {\n  float: left;\n  width: 98%;\n  display: none;\n\n  &.active {\n    display: block;\n    padding: 10px;\n    background-color: #fff;\n    box-shadow: 0 5px 4px -2px rgba(0, 0, 0, 0.15);\n  }\n}\n\n#top-btn {\n  display: none;\n  position: fixed;\n  bottom: 20px;\n  right: 30px;\n  z-index: 99;\n  font-size: 18px;\n  border: none;\n  outline: none;\n  background-color: purple;\n  color: white;\n  cursor: pointer;\n  padding: 15px;\n  border-radius: 4px;\n}\n\n#top-btn:hover {\n  background-color: #555;\n}\n",
     21    "/**************************/\n/* Tags */\n/**************************/\n\n.tag {\n  display: inline-block;\n  text-decoration: none;\n  padding: 0.4rem 0.8rem; /* 0.4 0.8*/\n  font-size: 0.9rem; /* 1.2 */\n  color: none;\n  border-radius: 100px;\n  font-weight: 300;\n}\n\n.tag.small {\n  font-size: 0.8rem;\n  border-radius: 3px;\n  font-weight: 300;\n}\n\n.tag.medium {\n  font-size: 0.9rem;\n  border-radius: 15px;\n  font-weight: 300;\n}\n\n.tag.large {\n  font-size: 1.4rem;\n  border-radius: 15px;\n  font-weight: 400;\n}\n\n.tag.step {\n  font-size: 1.2rem;\n  border-radius: 50px;\n  font-weight: 500;\n}\n\n.tag.uppercase {\n  text-transform: uppercase;\n}\n\n/* Basic */\n.tag--woo {\n  color: #eee;\n  background-color: rgb(108, 59, 164);\n}\n\n.tag--woorev {\n  color: rgb(108, 59, 164);\n  background-color: #eee;\n}\n\n.tag--wooadv {\n  color: #eee;\n  background-color: rgb(218, 179, 254);\n}\n\n.tag--auth {\n  color: #333;\n  background-color: rgb(246, 169, 14);\n}\n\n.tag--attr {\n  color: #333;\n  background-color: rgb(206, 206, 206);\n}\n\n.tag--large {\n  color: #333;\n  background-color: #eee;\n}\n\n/* Attributes */\n.tag--order {\n  color: #eee;\n  background-color: rgb(132, 95, 132);\n}\n\n.tag--billing {\n  color: #333;\n  background-color: rgb(206, 206, 206);\n}\n\n.tag--fields {\n  color: lightblue;\n  background-color: rgb(25, 25, 25);\n}\n\n/* Features */\n.tag--codefree {\n  // background-color: rgb(249, 222, 0);\n  color: #fff;\n  background-color: #11111a;\n}\n\n.tag--secure {\n  color: #fff;\n  background-color: rgb(10, 151, 218);\n}\n\n.tag--notice {\n  // background-color: #dd6413;\n  color: #fff;\n  background-color: #4a4af3;\n}\n\n.tag--new {\n  color: #11111a;\n  background-color: #f34a4a;\n}\n\n.tag--cap {\n  color: #f34a4a;\n  background-color: #11111a;\n}\n\n/* License */\n.tag--disable {\n  color: #fff;\n  background-color: rgb(231, 0, 0);\n}\n\n.tag--enable {\n  color: #fff;\n  background-color: #43aa8b;\n  // background-color: rgb(48, 154, 62);\n}\n\n/**************************/\n/* Dynamic Tags */\n/**************************/\n\n.tag.available:hover {\n  cursor: pointer;\n  opacity: 0.7;\n}\n\n.tag.selected {\n  cursor: pointer;\n  opacity: 0.7;\n}\n\n.tag.disabled {\n  color: white;\n  background-color: #d2d2d2;\n  /* text-decoration: line-through; */\n  pointer-events: none;\n}\n\n.tag.pro {\n  color: #333;\n  background-color: #fdf2e9;\n  cursor: not-allowed;\n}\n\n/* Step */\n.step-tag {\n  color: #eee;\n  background-color: #ccc;\n  cursor: pointer;\n  text-transform: uppercase;\n}\n\n.step-tag.current {\n  background-color: rgb(108, 59, 164);\n}\n\n.order-api-step > .step-pane {\n  display: none;\n  &.active {\n    display: block;\n  }\n}\n\n.notice-tag {\n  color: #eee;\n  background-color: #ccc;\n}\n\n/**************************/\n/* Buttons */\n/**************************/\n\n.btn,\n.btn:link,\n.btn:visited {\n  display: inline-block;\n  text-decoration: none;\n  font-size: 1rem; /* 2 */\n  font-weight: 400;\n  padding: 0.8rem 1.6rem; /* 1.6 3.2 */\n  border-radius: 9px; /* 9 */\n\n  /* default color*/\n  // background-color: #f34a4a;\n  color: #11111a;\n\n  /* Only necessary for .btn */\n  border: none;\n  cursor: pointer;\n  font-family: inherit;\n\n  /* Put transition on original \"state\" */\n  /* transition: background-color 0.3s; */\n  transition: all 0.3s;\n}\n\n.btn.medium {\n  font-size: 0.9rem;\n  font-weight: 400;\n  padding: 0.6rem 1rem;\n}\n\n.btn--full:link,\n.btn--full:visited {\n  // background-color: #e67e22;\n  // color: #fff;\n  background-color: #f34a4a;\n  color: #11111a;\n}\n\n.btn--full:hover,\n.btn--full:active {\n  // background-color: #cf711f;\n  background-color: #11111a;\n  color: #f34a4a;\n}\n\n.btn--full.small {\n  font-size: 0.9rem;\n  border-radius: 26px;\n  font-weight: 500;\n}\n\n.btn--outline:link,\n.btn--outline:visited {\n  // background-color: #fff;\n  background-color: #2f2f48;\n  // color: #555;\n}\n\n.btn--outline:hover,\n.btn--outline:active {\n  // background-color: #fdf2e9;\n  background-color: #11111a;\n  color: #fff;\n\n  // border: 3px solid #fff;\n  /* Trick to add border inside */\n  // box-shadow: inset 0 0 0 3px #fff;\n}\n\n/* Prev Next Save */\n.next-btn,\n.prev-btn,\n.save-btn,\n.back-btn,\n.save-settings {\n  text-align: right;\n  padding: 1px;\n}\n\n.btn-next,\n.btn-prev,\n.btn-save,\n.btn-back {\n  float: right;\n}\n",
     22    "/* $on: #009eea; */\n$on: rgb(108, 59, 164);\n$bg: #d9cb9e;\n$off: #8c8c8c;\n\n@mixin center {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  transform: translate(-50%, -50%);\n}\n\n@mixin userSelect($value) {\n  -webkit-touch-callout: $value;\n  -webkit-user-select: $value;\n  -khtml-user-select: $value;\n  -moz-user-select: $value;\n  -ms-user-select: $value;\n  user-select: $value;\n}\n\n@mixin ui-toggle($height, $on, $off) {\n  margin: 0;\n  padding: 0;\n\n  input[type=\"checkbox\"] {\n    display: none;\n\n    &:checked + label {\n      border-color: $on;\n      background: $on;\n      box-shadow: inset 0 0 0 #{$height / 2} $on;\n\n      > div {\n        margin-left: $height;\n      }\n    }\n  }\n\n  label {\n    transition: all 200ms ease;\n    display: inline-block;\n    position: relative;\n\n    @include userSelect(none);\n\n    background: $off;\n    box-shadow: inset 0 0 0 0 $on;\n    border: 2px solid $off;\n    border-radius: $height + 2;\n    width: $height * 2;\n    height: $height;\n\n    div {\n      transition: all 200ms ease;\n      background: #ffffff;\n      width: $height;\n      height: $height;\n      border-radius: $height / 2;\n    }\n\n    &:hover,\n    & > div:hover {\n      cursor: pointer;\n    }\n  }\n}\n\ndiv.ui-toggle {\n  @include ui-toggle(16px, $on, $off);\n\n  &.mb-10 {\n    margin-bottom: 10px;\n  }\n}\n",
     23    ".api-table {\n  width: 100%;\n  border-spacing: 5px;\n  text-align: left;\n\n  &,\n  & th,\n  & td {\n    border: 1px solid #ccc;\n    border-collapse: collapse;\n    padding: 10px;\n  }\n\n  & th {\n    background-color: #f5f5f5;\n  }\n}\n\n.tag-table {\n  width: 100%;\n  border-spacing: 5px;\n  text-align: left;\n\n  &,\n  & th,\n  & td {\n    border: 0.8px solid #ccc;\n    border-collapse: collapse;\n    padding: 5px;\n  }\n\n  & th {\n    background-color: none;\n  }\n}\n\n.text-center {\n  text-align: center;\n}\n",
     24    ".inline-block {\n  display: inline-block;\n}\n\n.text-left {\n  text-align: left;\n}\n\n.text-right {\n  text-align: right;\n}\n\n.w-50 {\n  width: 49%;\n}\n\n.inline {\n  display: inline-block;\n}\n\n.meta-label {\n  display: inline-block;\n  font-weight: bold;\n  margin-bottom: 5px;\n}\n\n.meta-container {\n  display: block;\n  margin-top: 20px;\n}\n",
     25    "/**************************/\n/* Feature CSS */\n/**************************/\n\n.section-features {\n  padding: 9.6rem 0;\n}\n\n.feature {\n  box-shadow: 0 2.4rem 4.8rem rgba(0, 0, 0, 0.075);\n  border-radius: 11px;\n  overflow: hidden;\n  transition: all 0.4s;\n}\n\n/* card action */\n.feature:hover {\n  transform: translateY(-1.2rem);\n  box-shadow: 0 3.2rem 6.4rem rgba(0, 0, 0, 0.06);\n}\n\n/* content backgrpund */\n.feature-content {\n  font-size: 0.9rem; /* 1.8 */\n  line-height: 1.8;\n  align-items: center;\n  padding: 1.6rem 2.4rem 2.4rem 2.4rem;\n  /* 3.2rem 4.8rem 4.8rem 4.8rem;*/\n}\n\n.feature-cards {\n  padding: 1.6rem 2.4rem 2.4rem 2.4rem;\n}\n\n.feature-tags {\n  margin-bottom: 1.2rem; /* 1.2rem */\n  display: flex;\n  gap: 0.4rem;\n}\n\n.feature-dashboard-tags {\n  margin-top: 2.2rem; /* 1.2rem */\n  margin-bottom: 2.2rem; /* 1.2rem */\n  display: flex;\n  gap: 0.4rem;\n}\n\n.feature-hidden {\n  margin-bottom: 1.2rem;\n  gap: 0.4rem;\n}\n\n.feature-name {\n  font-size: 1.2rem; /* 2.4 */\n  color: #333;\n  font-weight: 600;\n  margin-bottom: 1.6rem; /* 3.2 */\n}\n\n.feature-info {\n  font-size: 0.9rem; /*1.8 */\n  line-height: 1.6; /*1.8 */\n}\n\n.feature-attributes {\n  list-style: none;\n  display: flex;\n  flex-direction: column;\n  gap: 0.2rem; /* 2 */\n}\n\n.feature-attribute {\n  font-size: 1rem; /* 1.8 */\n  display: flex;\n  align-items: center;\n  gap: 0.8rem; /* 1.6 */\n}\n\n.feature-icon {\n  height: 2.4rem;\n  width: 2.4rem;\n  color: #e67e22;\n}\n\n.feature-img {\n  width: 100%;\n}\n\n.call-to-action {\n  text-align: center;\n  margin-top: 2.4rem; /* 4.8 */\n}\n\n.all-features {\n  text-align: center;\n  font-size: 1rem; /* 1.8 */\n}\n\n/* pagination  */\n.page-link {\n  position: relative;\n  display: block;\n  padding: 0.5rem 0.75rem;\n  margin-left: -1px;\n  line-height: 1.25;\n  color: #555;\n  background-color: #fae5d3;\n  border: 2px solid rgb(255, 255, 255);\n  border-radius: 11px;\n}\n\n/**************************/\n/* Card CSS no movement */\n/**************************/\n\n.card-content {\n  box-shadow: 0 2.4rem 4.8rem rgba(0, 0, 0, 0.075);\n  border-radius: 11px;\n  overflow: hidden;\n  transition: all 0.4s;\n}\n\n/**************************/\n/* Admin Notice */\n/**************************/\n\n.notice-action-button {\n  float: right;\n  margin-top: -66px;\n}\n\n/**************************/\n/* Order API */\n/**************************/\n\n/* action span */\n.action-tags {\n  margin-bottom: 1.2rem;\n  display: flex;\n  flex-wrap: wrap;\n  gap: 0.8rem 0.2rem;\n}\n\n.tag-item {\n  flex: 0 0 calc(50% - 0.1em);\n  display: flex;\n  // align-items: center;\n  // gap: 0.4rem;\n  // box-sizing: border-box;\n  flex-direction: column;\n  box-sizing: border-box;\n}\n\n.tag-wrapper {\n  display: flex;\n  align-items: center;\n  gap: 0.4rem;\n  margin-bottom: 0.3rem;\n}\n\n.tag-wrapper .tag {\n  flex-shrink: 0;\n  white-space: nowrap;\n}\n\n.tag-wrapper .image-container {\n  flex-shrink: 0;\n}\n\n.tag-wrapper .image-container img {\n  display: block;\n}\n\n.tag-desc {\n  margin: 0;\n  font-size: 0.85rem;\n  color: #666;\n  line-height: 1.4;\n  word-break: break-word;\n}\n\n/**************************/\n/* API input form  */\n/**************************/\n\n.api-input-form {\n  display: grid;\n  /* grid-template-columns: 0.5fr 1fr; */\n  border-radius: 11px;\n  overflow: hidden;\n  text-align: left;\n  /* padding: 1.8rem 0rem 1.8rem 1.8rem; */\n  padding: 0px 0px 18px 0px;\n  /* font-size: 1.8rem; */\n  font-size: 18px;\n  line-height: 1.8;\n}\n\n.api-input-form label {\n  /* display: block; */\n  /* font-size: 1.6rem; */\n  font-size: 16px;\n  font-weight: 500;\n  /*margin-bottom: 1.2rem; */\n  margin-bottom: 12px;\n  margin-top: 12px;\n}\n\n.api-input-form input,\n.api-input-form textarea,\n.api-input-form select {\n  width: 60%;\n  /* padding: 0.7rem;\n  font-size: 1.5rem; */\n  padding: 7px;\n  font-size: 15px;\n  font-family: inherit;\n  color: inherit;\n  border-radius: 9px;\n  background-color: #fdf2e9;\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n\n.api-input-form input::placeholder,\n.api-input-form textarea::placeholder {\n  color: #aaa;\n}\n\n.api-input-form *:focus {\n  outline: none;\n  /* box-shadow: 0 0 0 0.8rem rgba(253, 242, 233, 0.5); */\n  box-shadow: 0 0 0 16px rgba(253, 242, 233, 0.5);\n}\n\n/**************************/\n/* Advance mode */\n/**************************/\n\n.adv-box-container {\n  display: flex;\n  flex-direction: row;\n  padding: 0px 0px;\n}\n\n.adv-box {\n  width: 350px;\n}\n\n.adv-pre {\n  width: 650px;\n}\n\n.adv-box-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  margin: 0 10px 10px;\n}\n\n.adv-box-title {\n  font-weight: bold;\n  font-size: 0.9rem; /* 1.8 */\n  margin: 0;\n}\n\n.adv-box-table-container {\n  height: 250px;\n  margin-bottom: 15px;\n  overflow: auto;\n  border: 1px solid #bbb;\n  border-radius: 5px;\n}\n\n/* Idle */\n.adv-minus-btn {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: 0.4rem;\n}\n\n/* Delete button */\n.adv-box-btn {\n  border-radius: 5px;\n  transition: background-color 0.15s ease-in-out;\n  user-select: none;\n  border: none;\n  cursor: pointer;\n  font-size: 14px;\n  height: 35px;\n}\n\n.adv-box-btn.circle {\n  border-radius: 50px;\n}\n\n/* Button icon */\n.adv-box-btn-icon {\n  height: 3px;\n  width: 12px;\n  border-radius: 5px;\n  background-color: white;\n}\n\n.adv-box-btn-delete {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  background-color: #e53c4a;\n  height: 22px;\n  width: 22px;\n}\n\n.adv-box-btn-delete:hover {\n  background-color: #db3240;\n}\n\n.adv-box-btn-delete:active {\n  background-color: #cc2331;\n}\n\n.adv-box td .adv-box-btn-delete {\n  margin: auto;\n}\n\n.adv-box-footer {\n  display: flex;\n  flex-direction: column;\n}\n\n.adv-box-total {\n  flex: 1;\n  font-size: 14px;\n  font-weight: bold;\n  margin: 0 10px 15px;\n  padding: 0;\n  text-align: right;\n}\n\n/**************************/\n/* Tooltips*/\n/**************************/\n\n// .image-container {\n//   position: relative;\n//   display: inline-block;\n// }\n\n// .image-info {\n//   display: none;\n//   /* position: absolute; */\n//   position: absolute;\n//   background-color: #fff;\n//   padding: 1px;\n//   border: 1px solid #ccc;\n//   border-radius: 5px;\n// }\n\n// .image-container:hover .image-info {\n//   display: block;\n// }\n\n.api-label {\n  display: flex;\n  align-items: center; // 文字與圖片垂直置中\n  gap: 6px; // 文字與圖片之間的間距\n  font-weight: 500;\n  cursor: default;\n}\n\n/* 圖片 + info 的容器 */\n.image-wrapper {\n  position: relative;\n  display: inline-flex;\n  align-items: center;\n}\n\n.image-info {\n  display: none;\n  position: absolute;\n  left: 100%; // 貼在圖片右側\n  top: 50%;\n  transform: translateY(-50%);\n  margin-left: 10px; // 留出箭頭空間\n  background: #fff;\n  padding: 8px 12px;\n  border: 1px solid #ccc;\n  border-radius: 5px;\n  font-size: 13px;\n  white-space: nowrap;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);\n  z-index: 10;\n\n  /* 小箭頭(左側指向圖片) */\n  &::before {\n    content: \"\";\n    position: absolute;\n    top: 50%;\n    left: -16px; // 箭頭寬度\n    transform: translateY(-50%);\n    border: 8px solid transparent;\n    border-right-color: #ccc; // 外框箭頭(與邊框同色)\n  }\n\n  /* 內層白色箭頭(蓋掉邊框,讓看起來乾淨) */\n  &::after {\n    content: \"\";\n    position: absolute;\n    top: 50%;\n    left: -14px; // 比外箭頭內縮 1px\n    transform: translateY(-50%);\n    border: 7px solid transparent;\n    border-right-color: #fff; // 填滿背景色\n    z-index: 1;\n  }\n}\n\n/* Hover 時顯示 */\n.image-wrapper:hover .image-info {\n  display: block;\n}\n\n/**************************/\n/* Idle */\n/**************************/\n\n.aa-legend {\n  list-style-type: none;\n  margin: 17rem 0rem 0rem 5rem;\n}\n\n.aa-legend-item {\n  display: flex;\n  align-items: center;\n  margin-bottom: 10px;\n  padding: 0;\n}\n\n.aa-legend-description {\n  margin: 0 0 0 10px;\n}\n\n.aa-legend-bullet {\n  width: 22px;\n  height: 22px;\n  border-radius: 5px 5px 0 0;\n}\n\n.color1 {\n  color: white;\n  background-color: #277da1;\n}\n.color2 {\n  color: white;\n  background-color: #43aa8b;\n}\n.color3 {\n  color: white;\n  background-color: #f8961e;\n}\n",
     26    "/* Scroll control */\n.scroll {\n  /* background-color: #e9ecef;*/\n  padding: 0px;\n  /* How elements that don't fit into container appear */\n  overflow: auto;\n  display: flex;\n  flex-direction: column;\n  gap: 40px;\n}\n/* Api Tools Section*/\n.pretty {\n  background-color: #adb5bd;\n  flex-shrink: 0;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n.pretty.sendapi {\n  height: 555px;\n}\n\n.pretty.filterapi {\n  height: 222px;\n  width: 777px;\n}\n\n.pretty.manageapi {\n  height: 444px;\n}\n\n/* Order Api Section*/\n.pretty.api {\n  height: 333px;\n}\n\n.pretty.advance {\n  height: 250px;\n  color: lightblue;\n}\n\n.pretty.props {\n  height: 333px;\n  align-items: left;\n}\n/* Hide pretty */\n.json {\n  display: none;\n}\n",
     27    ".container {\n  /* 1140px */\n  max-width: 80rem;\n  /* max-width: 80rem;\n  /*120rem*/\n  padding: 0 3.2rem;\n  margin: 0 auto;\n}\n\n.grid {\n  display: grid;\n  column-gap: 2.2rem; /* 6.4 */\n  row-gap: 9.6rem;\n  /* margin-bottom: 9.6rem; */\n}\n\n/*\n.grid:not(:last-child) {\n  margin-bottom: 9.6rem;\n}\n*/\n.grid--2-cols {\n  grid-template-columns: repeat(2, 1fr);\n}\n\n.grid--3-cols {\n  grid-template-columns: repeat(3, 1fr);\n}\n\n.grid--4-cols {\n  grid-template-columns: repeat(4, 1fr);\n}\n\n.grid--5-cols {\n  grid-template-columns: repeat(5, 1fr);\n}\n\n.grid--center-v {\n  align-items: center;\n}\n\n/**************************/\n/* HEADER */\n/**************************/\n\n.header {\n  background: #fff;\n  box-sizing: border-box;\n  padding: 0;\n  position: fixed;\n  width: calc(100% - 160px);\n  top: 32px;\n  z-index: 1001;\n}\n\n.header-title {\n  padding: 1.2rem 0rem 1.2rem 0rem;\n}\n\n/**************************/\n/* General */\n/**************************/\n\n.heading-primary,\n.heading-secondary,\n.heading-tertiary {\n  font-weight: 700;\n  color: #333;\n  /* color: #45260a; */\n  /* color: #343a40; */\n  letter-spacing: -0.5px;\n}\n\n.heading-primary {\n  font-size: 5.2rem;\n  line-height: 1.05;\n  margin-bottom: 3.2rem;\n}\n\n.heading-secondary {\n  font-size: 4.4rem;\n  line-height: 1.2;\n  margin-bottom: 9.6rem;\n}\n\n.heading-tertiary {\n  font-size: 3rem;\n  line-height: 1.2;\n  margin-bottom: 3.2rem;\n}\n\n.subheading {\n  display: block;\n  font-size: 1.6rem;\n  font-weight: 500;\n  color: #cf711f;\n  text-transform: uppercase;\n  margin-bottom: 1.6rem;\n  letter-spacing: 0.75px;\n}\n\n.list {\n  list-style: none;\n  display: flex;\n  flex-direction: column;\n  gap: 1.6rem;\n}\n\n.list-item {\n  font-size: 1.8rem;\n  display: flex;\n  align-items: center;\n  gap: 1.6rem;\n}\n\n.list-icon {\n  width: 3rem;\n  height: 3rem;\n  color: #e67e22;\n}\n\n*:focus {\n  outline: none;\n  /* outline: 4px dotted #e67e22; */\n  /* outline-offset: 8px; */\n  box-shadow: 0 0 0 0.8rem rgba(230, 125, 34, 0.5);\n}\n\n/* HELPER/SETTINGS CLASSES */\n.margin-right-sm {\n  margin-right: 1.6rem !important;\n}\n\n.margin-bottom-md {\n  margin-bottom: 4.8rem !important;\n}\n\n.center-text {\n  text-align: center;\n}\n\nstrong {\n  font-weight: 500;\n}\n\n/**************************/\n/* SECTION */\n/**************************/\n\n.section-pricing {\n  padding: 9.6rem 0;\n}\n\n.pricing-plan {\n  border-radius: 11px;\n\n  width: 75%;\n}\n\n.pricing-plan--starter {\n  justify-self: end;\n  border: 2px solid #fdf2e9;\n  padding: 4.6rem;\n}\n\n.pricing-plan--complete {\n  background-color: #fdf2e9;\n  padding: 4.8rem;\n  position: relative;\n  overflow: hidden;\n}\n\n.pricing-plan--complete::after {\n  content: \"Best value\";\n  position: absolute;\n  top: 6%;\n  right: -18%;\n\n  text-transform: uppercase;\n  font-size: 1.4rem;\n  font-weight: 700;\n  color: #333;\n  background-color: #ffd43b;\n  padding: 0.8rem 8rem;\n  transform: rotate(45deg);\n}\n\n.plan-header {\n  text-align: center;\n  margin-bottom: 4.8rem;\n}\n\n.plan-name {\n  color: #cf711f;\n  font-weight: 600;\n  font-size: 2rem;\n  text-transform: uppercase;\n  letter-spacing: 0.75;\n  margin-bottom: 3.2rem;\n}\n\n.plan-price {\n  font-size: 6.2rem;\n  font-weight: 600;\n  color: #333;\n  margin-bottom: 1.6rem;\n}\n\n.plan-price span {\n  font-size: 3rem;\n  font-weight: 500;\n  margin-right: 0.8rem;\n}\n\n.plan-text {\n  font-size: 1.6rem;\n  line-height: 1.6;\n  color: #6f6f6f;\n}\n\n.plan-sing-up {\n  text-align: center;\n  margin-top: 4.8rem;\n}\n\n.plan-details {\n  font-size: 1.6rem;\n  line-height: 1.6;\n  text-align: center;\n}\n\n.feature-icon {\n  color: #e67e22;\n  height: 3.2rem;\n  width: 3.2rem;\n  background-color: #fdf2e9;\n  margin-bottom: 3.2rem;\n  padding: 1.6rem;\n  border-radius: 50%;\n}\n\n.feature-title {\n  font-size: 2.4rem;\n  color: #333;\n  font-weight: 700;\n  margin-bottom: 1.6rem;\n}\n\n.feature-text {\n  font-size: 1.8rem;\n  line-height: 1.8;\n}\n",
     28    "/* desert scheme ported from vim to google prettify */\r\npre.prettyprint {\r\n  display: block;\r\n  background-color: #333;\r\n}\r\npre .nocode {\r\n  background-color: none;\r\n  color: #000;\r\n}\r\npre .str {\r\n  color: #ffa0a0;\r\n} /* string  - pink */\r\npre .kwd {\r\n  color: #f0e68c;\r\n  font-weight: bold;\r\n}\r\npre .com {\r\n  color: #87ceeb;\r\n} /* comment - skyblue */\r\npre .typ {\r\n  color: #98fb98;\r\n} /* type    - lightgreen */\r\npre .lit {\r\n  color: #cd5c5c;\r\n} /* literal - darkred */\r\npre .pun {\r\n  color: #fff;\r\n} /* punctuation */\r\npre .pln {\r\n  color: #fff;\r\n} /* plaintext */\r\npre .tag {\r\n  color: #f0e68c;\r\n  font-weight: bold;\r\n} /* html/xml tag    - lightyellow */\r\npre .atn {\r\n  color: #bdb76b;\r\n  font-weight: bold;\r\n} /* attribute name  - khaki */\r\npre .atv {\r\n  color: #ffa0a0;\r\n} /* attribute value - pink */\r\npre .dec {\r\n  color: #98fb98;\r\n} /* decimal         - lightgreen */\r\n\r\n/* Specify class=linenums on a pre to get line numbering */\r\nol.linenums {\r\n  margin-top: 0;\r\n  margin-bottom: 0;\r\n  color: #aeaeae;\r\n} /* IE indents via margin-left */\r\nli.L0,\r\nli.L1,\r\nli.L2,\r\nli.L3,\r\nli.L5,\r\nli.L6,\r\nli.L7,\r\nli.L8 {\r\n  list-style-type: none;\r\n}\r\n/* Alternate shading for lines */\r\nli.L1,\r\nli.L3,\r\nli.L5,\r\nli.L7,\r\nli.L9 {\r\n}\r\n\r\n@media print {\r\n  pre.prettyprint {\r\n    background-color: none;\r\n  }\r\n  pre .str,\r\n  code .str {\r\n    color: #060;\r\n  }\r\n  pre .kwd,\r\n  code .kwd {\r\n    color: #006;\r\n    font-weight: bold;\r\n  }\r\n  pre .com,\r\n  code .com {\r\n    color: #600;\r\n    font-style: italic;\r\n  }\r\n  pre .typ,\r\n  code .typ {\r\n    color: #404;\r\n    font-weight: bold;\r\n  }\r\n  pre .lit,\r\n  code .lit {\r\n    color: #044;\r\n  }\r\n  pre .pun,\r\n  code .pun {\r\n    color: #440;\r\n  }\r\n  pre .pln,\r\n  code .pln {\r\n    color: #000;\r\n  }\r\n  pre .tag,\r\n  code .tag {\r\n    color: #006;\r\n    font-weight: bold;\r\n  }\r\n  pre .atn,\r\n  code .atn {\r\n    color: #404;\r\n  }\r\n  pre .atv,\r\n  code .atv {\r\n    color: #060;\r\n  }\r\n}\r\n",
     29    "/***********************************************************/\n/* ==================== Global Color ===================== */\n/***********************************************************/\n\n/*\nPrimary         #f34a4a\nSecondary       #4a4af3\nText            #b2b2fa\nAccent          #f34a4a\nBG Primary      #11111A\nBG Secondary    #1B1B28\nHeading         #fff\nButton Text     #11111A\nTertiary        #2F2F48\n*/\n\n/* Light Mode(default */\n:root {\n  --anyapi-bg: #f6f7f7;\n  --anyapi-card: #fff;\n  --anyapi-primary: #5d5fef;\n  --anyapi-primary-hover: #4c4ddc;\n  --anyapi-text: #1a1a2e;\n  --anyapi-success: #00c48c;\n  --anyapi-danger: #ff6b6b;\n  // --anyapi-border: #e8e8ff;\n  // --anyapi-text-muted: #666699;\n}\n\n.dark-mode {\n  --anyapi-bg: #0f1121;\n  --anyapi-card: #161827;\n  --anyapi-primary: #7b7cff;\n  --anyapi-primary-hover: #9697ff;\n  --anyapi-text: ##b2b2fa;\n  --anyapi-success: #00d4a0;\n  --anyapi-danger: #ff6b9d;\n  // --anyapi-border: #23273a;\n  // --anyapi-text-muted: #9494b8;\n}\n\n/***********************************************************/\n/* ====================== Dashboard ====================== */\n/***********************************************************/\n\n#anyapi-review-banner {\n  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n  color: white;\n  padding: 20px 30px;\n  border-radius: 20px;\n  margin: 30px 0;\n  box-shadow:\n    0 20px 40px rgba(102, 126, 234, 0.3),\n    0 10px 20px rgba(118, 75, 162, 0.2);\n  position: relative;\n  overflow: hidden;\n  animation: slideDown 0.6s ease-out;\n}\n\n#anyapi-review-banner::before {\n  content: \"\";\n  position: absolute;\n  top: 0;\n  left: -100%;\n  width: 100%;\n  height: 100%;\n  background: linear-gradient(\n    90deg,\n    transparent,\n    rgba(255, 255, 255, 0.1),\n    transparent\n  );\n  animation: shimmer 3s infinite;\n}\n\n.review-content {\n  display: flex;\n  align-items: center;\n  gap: 20px;\n  max-width: 1000px;\n  margin: 0 auto;\n}\n\n.review-icon {\n  font-size: 32px;\n  animation: float 3s ease-in-out infinite;\n}\n\n.review-text h3 {\n  margin: 0 0 4px 0;\n  font-size: 22px;\n  font-weight: 700;\n}\n\n.review-text p {\n  margin: 0 0 8px 0;\n  opacity: 0.9;\n  font-size: 16px;\n}\n\n.review-stars {\n  font-size: 20px;\n  margin-top: 4px;\n  animation: sparkle 2s ease-in-out infinite;\n}\n\n.review-actions {\n  display: flex;\n  gap: 12px;\n  margin-left: auto;\n}\n\n.review-actions .button {\n  padding: 12px 24px !important;\n  font-weight: 600 !important;\n  border-radius: 12px !important;\n  transition: all 0.3s ease !important;\n}\n\n.review-actions .button-primary {\n  background: #fff !important;\n  color: #667eea !important;\n  box-shadow: 0 8px 20px rgba(255, 255, 255, 0.3) !important;\n}\n\n.review-actions .button-primary:hover {\n  transform: translateY(-2px);\n  box-shadow: 0 12px 30px rgba(255, 255, 255, 0.4) !important;\n}\n\n.review-close {\n  position: absolute;\n  top: 12px;\n  right: 20px;\n  background: none;\n  border: none;\n  color: rgba(255, 255, 255, 0.8);\n  font-size: 24px;\n  width: 32px;\n  height: 32px;\n  border-radius: 50%;\n  cursor: pointer;\n  transition: all 0.3s ease;\n}\n\n.review-close:hover {\n  background: rgba(255, 255, 255, 0.2);\n  color: white;\n  transform: rotate(90deg);\n}\n\n/* Animations */\n@keyframes slideDown {\n  from {\n    opacity: 0;\n    transform: translateY(-30px);\n  }\n  to {\n    opacity: 1;\n    transform: translateY(0);\n  }\n}\n\n@keyframes shimmer {\n  0% {\n    left: -100%;\n  }\n  100% {\n    left: 100%;\n  }\n}\n\n@keyframes float {\n  0%,\n  100% {\n    transform: translateY(0px);\n  }\n  50% {\n    transform: translateY(-10px);\n  }\n}\n\n@keyframes sparkle {\n  0%,\n  100% {\n    opacity: 1;\n  }\n  50% {\n    opacity: 0.7;\n  }\n}\n\n/* Responsive */\n@media (max-width: 768px) {\n  .review-content {\n    flex-direction: column;\n    text-align: center;\n    gap: 16px;\n  }\n  .review-actions {\n    margin-left: 0 !important;\n    justify-content: center;\n    flex-wrap: wrap;\n  }\n}\n\n#anyapi-dashboard {\n  font-family:\n    -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n  background: var(--anyapi-bg);\n  min-height: 80vh;\n  padding: 20px;\n  border-radius: 8px;\n}\n\n#anyapi-last-updated {\n  font-size: 13px;\n  color: #646970;\n  margin-top: 10px;\n  margin-left: 15px;\n  white-space: nowrap;\n  float: right;\n}\n\n/* Main Layout (Left Content + Right Info */\n.anyapi-main-grid {\n  display: grid;\n  grid-template-columns: 1fr 320px;\n  gap: 30px;\n  margin-top: 20px;\n}\n@media (max-width: 1200px) {\n  .anyapi-main-grid {\n    grid-template-columns: 1fr;\n  }\n  .anyapi-sidebar {\n    order: -1;\n  }\n}\n\n.anyapi-grid {\n  display: grid;\n  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n  gap: 20px;\n  margin-bottom: 30px;\n}\n\n.anyapi-card {\n  // background: #fff;\n  background: var(--anyapi-card);\n  padding: 24px;\n  border-radius: 12px;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n  transition: transform 0.2s;\n}\n\n.anyapi-card:hover {\n  transform: translateY(-4px);\n}\n\n.anyapi-card h3 {\n  margin: 0 0 12px;\n  font-size: 14px;\n  color: #646970;\n  text-transform: uppercase;\n  letter-spacing: 0.5px;\n}\n\n.anyapi-card .value {\n  font-size: 32px;\n  font-weight: 700;\n  color: #1d2327;\n  margin: 8px 0 0;\n}\n\n.anyapi-card .change {\n  font-size: 14px;\n}\n\n/* Status */\n.positive {\n  // color: #00a32a;\n  color: var(--anyapi-success);\n}\n\n.warning {\n  color: #dba617;\n  // color: var(--anyapi-success);\n}\n\n.negative {\n  // color: #d63638;\n  color: var(--anyapi-danger);\n}\n\n/* Chart Section */\n.anyapi-charts-row {\n  display: grid;\n  grid-template-columns: 2fr 1fr;\n  gap: 20px;\n  margin-bottom: 30px;\n}\n\n@media (max-width: 960px) {\n  .anyapi-charts-row {\n    grid-template-columns: 1fr;\n  }\n}\n\n.anyapi-chart-card {\n  // background: #fff;\n  background: var(--anyapi-card);\n  padding: 24px;\n  border-radius: 12px;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.anyapi-chart-card h2 {\n  margin-top: 0;\n  font-size: 18px;\n}\n\n/* Logs Section */\n#anyapi-logs-section {\n  // background: #fff;\n  background: var(--anyapi-card);\n  border-radius: 12px;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n  overflow: hidden;\n}\n\n#anyapi-logs-header {\n  padding: 20px 24px;\n  border-bottom: 1px solid #e2e4e7;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n}\n\n#anyapi-logs-section .logs-controls {\n  display: flex;\n  gap: 12px;\n  align-items: center;\n}\n\n#anyapi-log-search {\n  padding: 10px 16px;\n  border: 1px solid #ddd;\n  border-radius: 12px;\n  width: 300px;\n  max-width: 100%;\n}\n\n/* status-filter */\n.logs-controls {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 12px;\n  align-items: center;\n}\n\n#anyapi-status-filter {\n  padding: 8px 12px;\n  border: 1px solid #ddd;\n  border-radius: 8px;\n  background: white;\n  min-width: 160px;\n}\n\n.dark-mode #anyapi-status-filter {\n  background: #2d3748;\n  border-color: #4a5568;\n  color: white;\n}\n\n/* log refresh button */\n#anyapi-log-refresh .dashicons {\n  font-size: 16px;\n  width: 16px;\n  height: 16px;\n  vertical-align: middle;\n}\n\n#anyapi-log-refresh.rotating .dashicons {\n  animation: spin 1s linear infinite;\n}\n\n/* Skeleton Loading */\n.skeleton-row {\n  background: #f8f9fa;\n  animation: pulse 1.5s infinite ease-in-out;\n}\n\n.skeleton {\n  height: 16px;\n  background: linear-gradient(90deg, #e0e0e0 25%, #f0f0f0 50%, #e0e0e0 75%);\n  background-size: 200% 100%;\n  border-radius: 4px;\n  animation: skeleton-loading 1.8s infinite linear;\n}\n\n.skeleton.short {\n  width: 60%;\n}\n.skeleton.long {\n  width: 85%;\n}\n.skeleton.status {\n  width: 40%;\n}\n.skeleton.payload {\n  width: 90%;\n  height: 32px;\n}\n\n@keyframes skeleton-loading {\n  0% {\n    background-position: 200% 0;\n  }\n  100% {\n    background-position: -200% 0;\n  }\n}\n\n@keyframes pulse {\n  0%,\n  100% {\n    opacity: 1;\n  }\n  50% {\n    opacity: 0.7;\n  }\n}\n\n.dark-mode .skeleton {\n  background: linear-gradient(90deg, #2d3748 25%, #4a5568 50%, #2d3748 75%);\n}\n\n/* Loading */\n.loading {\n  text-align: center;\n  padding: 60px;\n  color: #64748b;\n  font-size: 16px;\n}\n\n.loading::after {\n  content: \"\";\n  display: inline-block;\n  width: 20px;\n  height: 20px;\n  border: 2px solid #cbd5e1;\n  border-top-color: #7c3aed;\n  border-radius: 50%;\n  animation: spin 1s linear infinite;\n  margin-left: 12px;\n}\n\n@keyframes spin {\n  to {\n    transform: rotate(360deg);\n  }\n}\n\n/* pagination */\n#logs-pagination,\n#logs-info {\n  display: flex;\n  align-items: center;\n  gap: 16px;\n  flex-wrap: wrap;\n  margin: 5px 0;\n  font-size: 14px;\n  color: #2c3338;\n}\n\n.tablenav-pages a.button,\n.tablenav-pages span.current-page,\n.tablenav-pages a.page-numbers {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  min-width: 30px;\n  height: 30px;\n  font-size: 13px;\n  font-weight: 600;\n  padding: 0 12px;\n  margin: 0 4px;\n  border-radius: 6px;\n  text-decoration: none;\n  transition: all 0.2s ease;\n  box-sizing: border-box;\n}\n\n/* 一般頁碼按鈕 */\n.tablenav-pages a.button,\n.tablenav-pages a.page-numbers {\n  background: #ffffff;\n  border: 1px solid #c3c4c7;\n  color: #2c3338;\n}\n\n.tablenav-pages a.button:hover,\n.tablenav-pages a.page-numbers:hover {\n  background: #f0f0f1;\n  border-color: #8c8f94;\n  color: #1d2327;\n}\n\n/* 當前頁(current-page) - 更突出 */\n.tablenav-pages span.current-page {\n  background: #2271b1;\n  color: white;\n  border: 1px solid #135e96;\n  font-weight: bold;\n  box-shadow: 0 2px 6px rgba(34, 113, 177, 0.25);\n}\n\n/* 上一頁 / 下一頁 按鈕 - 文字更明顯 */\n.prev-page,\n.next-page {\n  min-width: 100px !important; /* 拉長一點,更好點 */\n  font-weight: 600;\n}\n\n.tablenav-pages span.dots {\n  padding: 0 12px;\n  color: #646970;\n  font-weight: bold;\n}\n\n@media (max-width: 782px) {\n  #logs-pagination,\n  #logs-info {\n    flex-direction: column;\n    align-items: flex-start;\n    gap: 12px;\n  }\n\n  .tablenav-pages a.button,\n  .tablenav-pages span.current-page {\n    min-width: 36px;\n    height: 36px;\n    font-size: 14px;\n  }\n\n  .prev-page,\n  .next-page {\n    min-width: 80px !important;\n  }\n}\n\n/* log section */\n.method-post {\n  background: #7c3aed;\n  color: white;\n  padding: 4px 10px;\n  border-radius: 8px;\n  font-size: 11px;\n  font-weight: bold;\n}\n\n.status-badge {\n  padding: 4px 10px;\n  border-radius: 8px;\n  font-weight: bold;\n  font-size: 12px;\n}\n\n.status-badge.success {\n  background: #10b981;\n  color: white;\n}\n\n.status-badge.warning {\n  background: #f59e0b;\n  color: white;\n}\n\n.status-badge.error {\n  background: #ef4444;\n  color: white;\n}\n\n.endpoint code {\n  font-size: 12px;\n  background: #f3f4f6;\n  padding: 2px 6px;\n  border-radius: 4px;\n}\n\n.payload pre {\n  margin: 0;\n  font-size: 11px;\n  color: #666;\n  white-space: pre-wrap;\n  word-break: break-all;\n}\n\n#anyapi-logs-footer {\n  display: flex;\n  justify-content: space-between;\n  margin-top: 16px;\n  font-size: 14px;\n  color: #666;\n}\n\n#anyapi-log-search {\n  padding: 8px 12px;\n  border: 1px solid #ddd;\n  border-radius: 6px;\n  width: 300px;\n}\n\n/* log table */\n#anyapi-logs-table {\n  width: 100%;\n  border-collapse: collapse;\n}\n\n#anyapi-logs-table th {\n  background: #f9fafb;\n  text-align: left;\n  padding: 12px 16px;\n  font-weight: 600;\n  color: #1d2327;\n}\n\n#anyapi-logs-table td {\n  padding: 12px 16px;\n  border-top: 1px solid #e2e4e7;\n  font-size: 14px;\n}\n\n/* Idle CSSS */\n/* Status */\n.status-2xx {\n  // color: #00a32a;\n  color: var(--anyapi-success);\n}\n\n.status-4xx {\n  // color: #d63638;\n  color: var(--anyapi-danger);\n}\n\n.status-5xx {\n  // color: #d63638;\n  color: var(--anyapi-danger);\n  font-weight: bold;\n}\n\n/* Idle CSS */\n.payload {\n  font-family: SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n  font-size: 12px;\n  color: #646970;\n  max-width: 300px;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n/* Idle CSS */\n// .loading {\n//   text-align: center;\n//   padding: 60px;\n//   font-size: 18px;\n//   color: #646970;\n// }\n\n/* Right Sidebar & Cards */\n.anyapi-sidebar {\n  display: flex;\n  flex-direction: column;\n  gap: 20px;\n}\n\n.anyapi-sidebar-card {\n  // background: #fff;\n  background: var(--anyapi-card);\n  padding: 20px;\n  border-radius: 12px;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n  border: 1px solid #e2e4e7;\n}\n\n.anyapi-sidebar-card h3 {\n  margin: 0 0 12px;\n  font-size: 16px;\n  color: #1d2327;\n}\n\n/* Plugin Version Card */\n.dashicons-yes-alt {\n  color: #00a32a;\n}\n\n.dashicons-warning {\n  color: #dba617;\n}\n\n.dashicons-update {\n  color: #f56e14;\n  animation: anyapi-spin 2s linear infinite;\n}\n\n.anyapi-new-version-notice {\n  font-size: 12px;\n  color: #d63638;\n  font-weight: bold;\n  margin: 8px 0 4px;\n\n  small {\n    font-weight: normal;\n    color: #666;\n  }\n}\n\n/* Update details box */\n.anyapi-update-box {\n  margin: 10px 0;\n  padding: 12px;\n  background: #fff8e5;\n  border-left: 4px solid #ffb900;\n  font-size: 11px;\n  line-height: 1.4;\n\n  strong {\n    font-size: 11px;\n    display: block;\n    margin-bottom: 4px;\n  }\n\n  ul {\n    margin: 6px 0 8px;\n    padding-left: 18px;\n    line-height: 1.4;\n\n    li {\n      margin-bottom: 2px;\n    }\n  }\n\n  .anyapi-update-button {\n    background: #d63638;\n    border-color: #d63638;\n    box-shadow: none;\n    text-shadow: none;\n    color: #fff !important;\n\n    &:hover,\n    &:focus {\n      background: #c02a2a;\n      border-color: #c02a2a;\n    }\n  }\n\n  .anyapi-view-details {\n    margin-left: 8px;\n    font-size: 10px;\n    color: #666;\n\n    &:hover {\n      color: #d63638;\n    }\n  }\n}\n\n.anyapi-latest-text {\n  font-size: 12px;\n  color: #646970;\n}\n\n/* Global */\n@keyframes anyapi-spin {\n  from {\n    transform: rotate(0deg);\n  }\n  to {\n    transform: rotate(360deg);\n  }\n}\n\n/* Upgrade Card */\n.anyapi-upgrade {\n  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n  color: white;\n  position: relative;\n  overflow: hidden;\n}\n\n.anyapi-upgrade::before {\n  content: \"\";\n  position: absolute;\n  top: -50%;\n  right: -50%;\n  width: 200%;\n  height: 200%;\n  background: rgba(255, 255, 255, 0.1);\n  transform: rotate(30deg);\n}\n\n.anyapi-upgrade h3,\n.anyapi-upgrade p,\n.anyapi-upgrade li {\n  color: white;\n}\n\n.anyapi-upgrade .badge {\n  position: absolute;\n  top: 12px;\n  right: 12px;\n  background: #ffb900;\n  color: #000;\n  padding: 4px 10px;\n  border-radius: 20px;\n  font-size: 11px;\n  font-weight: bold;\n}\n\n.anyapi-upgrade .features {\n  margin: 16px 0;\n  padding-left: 20px;\n}\n\n.anyapi-upgrade .features li {\n  margin-bottom: 8px;\n  position: relative;\n}\n\n.anyapi-upgrade .features li::before {\n  content: \"✓\";\n  position: absolute;\n  left: -20px;\n}\n\n.anyapi-upgrade .button-primary {\n  background: white;\n  color: #667eea;\n  font-weight: bold;\n}\n\n.anyapi-button-block {\n  display: block;\n  text-align: center;\n}\n\n.anyapi-save {\n  text-align: center;\n  margin-top: 12px;\n  font-size: 14px;\n  opacity: 0.9;\n}\n\n/* Quick Links Card */\n.anyapi-quick-links {\n  list-style: none;\n  padding: 0;\n  margin: 0;\n}\n\n.anyapi-quick-links li {\n  margin-bottom: 8px;\n}\n\n.anyapi-quick-links a {\n  color: #0073aa;\n  text-decoration: none;\n}\n\n.anyapi-quick-links a:hover {\n  text-decoration: underline;\n}\n\n/* Bottom Cards */\n.anyapi-bottom-grid {\n  display: grid;\n  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));\n  gap: 20px;\n  margin-top: 40px;\n}\n.anyapi-info-card {\n  // background: #fff;\n  background: var(--anyapi-card);\n  padding: 24px;\n  border-radius: 12px;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n  border: 1px solid #e2e4e7;\n  text-align: center;\n}\n.anyapi-info-card h3 {\n  margin: 0 0 12px;\n  color: #1d2327;\n}\n.anyapi-info-card p {\n  color: #646970;\n  margin-bottom: 20px;\n  line-height: 1.5;\n}\n.anyapi-info-card .button {\n  width: 100%;\n}\n\n/***********************************************************/\n/* ================== Dashboard Header =================== */\n/***********************************************************/\n\n#anyapi-dashboard-header {\n  position: relative;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  min-height: 64px;\n  padding: 0 24px; /* <- padding -> */\n  margin-bottom: 28px;\n  flex-wrap: wrap;\n  gap: 16px;\n}\n\n.anyapi-header-left {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n}\n\n.anyapi-logo {\n  height: 40px;\n  width: auto;\n}\n\n.anyapi-logo svg {\n  border-radius: 8px;\n  transition: transform 0.2s;\n}\n.anyapi-logo:hover svg {\n  transform: scale(1.08);\n}\n\n.anyapi-header-right {\n  position: absolute;\n  right: 20px; /* ← 24px、20px、16px、30px */\n  top: 50%;\n  transform: translateY(-50%);\n}\n\n/* Responsive */\n@media (max-width: 782px) {\n  #anyapi-dashboard-header {\n    padding: 0 16px;\n  }\n  .anyapi-header-right {\n    right: 16px; /* moblie mode can be decrease */\n  }\n}\n\n/***********************************************************/\n/* ================== Dark Mode Toggle =================== */\n/***********************************************************/\n\n#dark-mode-toggle {\n  position: relative;\n  width: 56px;\n  height: 28px;\n  background: #ccd0d5;\n  border-radius: 50px;\n  border: none;\n  cursor: pointer;\n  overflow: hidden;\n  transition: background 0.3s;\n}\n\n#dark-mode-toggle .toggle-ball {\n  position: absolute;\n  top: 4px;\n  left: 4px;\n  width: 20px;\n  height: 20px;\n  background: white;\n  border-radius: 50%;\n  transition: transform 0.3s;\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);\n}\n\n#dark-mode-toggle .sun-icon,\n#dark-mode-toggle .moon-icon {\n  position: absolute;\n  top: 6px;\n  font-size: 14px;\n  transition: opacity 0.3s;\n}\n\n#dark-mode-toggle .sun-icon {\n  left: 8px;\n  opacity: 1;\n}\n#dark-mode-toggle .moon-icon {\n  right: 8px;\n  opacity: 0;\n}\n\n/* Toggle Dark Mode */\n.dark-mode #dark-mode-toggle {\n  background: #6366f1;\n}\n\n.dark-mode #dark-mode-toggle .toggle-ball {\n  transform: translateX(28px);\n}\n\n.dark-mode #dark-mode-toggle .sun-icon {\n  opacity: 0;\n}\n\n.dark-mode #dark-mode-toggle .moon-icon {\n  opacity: 1;\n}\n\n.dark-mode {\n  background: #1e1e1e;\n  color: #e0e0e0;\n}\n\n.dark-mode #anyapi-dashboard,\n.dark-mode .anyapi-card,\n.dark-mode .chart-card,\n.dark-mode #logs-section,\n.dark-mode .anyapi-sidebar-card,\n.dark-mode .anyapi-info-card {\n  background: #2d2d2d;\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);\n  border-color: #444;\n}\n\n.dark-mode .anyapi-card h3,\n.dark-mode .chart-card h2,\n.dark-mode #logs-table th,\n.dark-mode .anyapi-info-card h3 {\n  color: #a0a0a0;\n}\n\n.dark-mode .value,\n.dark-mode #logs-table td {\n  color: var(--anyapi-text);\n}\n\n.dark-mode #logs-table th {\n  background: #363636;\n}\n\n.dark-mode .status-2xx {\n  // color: #00e676;\n  color: var(--anyapi-success);\n}\n.dark-mode .status-4xx,\n.dark-mode .status-5xx {\n  // color: #ff5252;\n  color: var(--anyapi-danger);\n}\n",
     30    "/* Integration 專屬樣式(加在原有 CSS 後) */\n:root {\n  /* 延續上次變數 */\n  --anyapi-purple: #7b68ee; /* 步驟紫色,從截圖提取 */\n  --anyapi-gray-light: #f8f9fa;\n  --anyapi-gray: #6c757d;\n}\n\n.dark-mode {\n  --anyapi-purple: #a78bfa;\n  --anyapi-gray-light: #2d3748;\n  --anyapi-gray: #a0aec0;\n}\n\n.integration-main {\n  display: grid;\n  grid-template-columns: 200px 1fr;\n  gap: 30px;\n  margin: 20px 0;\n}\n\n.steps-sidebar {\n  background: var(--anyapi-card);\n  border-radius: 12px;\n  padding: 20px;\n  height: fit-content;\n}\n\n.step-item {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 12px 0;\n  cursor: pointer;\n  transition: color 0.3s;\n}\n\n.step-item.active .step-number {\n  background: var(--anyapi-purple);\n  color: white;\n}\n\n.step-number {\n  width: 32px;\n  height: 32px;\n  border-radius: 50%;\n  background: var(--anyapi-gray-light);\n  display: grid;\n  place-items: center;\n  font-weight: bold;\n}\n\n.step-label {\n  font-size: 14px;\n  color: var(--anyapi-text-muted);\n}\n\n.integration-content {\n  position: relative;\n}\n\n.step-content {\n  display: none;\n  animation: fadeIn 0.3s;\n}\n\n.step-content.active {\n  display: block;\n}\n\n@keyframes fadeIn {\n  from {\n    opacity: 0;\n    transform: translateX(10px);\n  }\n  to {\n    opacity: 1;\n    transform: translateX(0);\n  }\n}\n\n.form-group {\n  margin-bottom: 24px;\n}\n\n.form-group label {\n  display: block;\n  margin-bottom: 8px;\n  font-weight: 600;\n  color: var(--anyapi-text);\n}\n\n.form-group input,\n.form-group select,\n.form-group textarea {\n  width: 100%;\n  padding: 12px;\n  border: 1px solid var(--anyapi-border);\n  border-radius: 8px;\n  background: var(--anyapi-card);\n  transition: border-color 0.3s;\n}\n\n.form-group input:focus,\n.form-group select:focus,\n.form-group textarea:focus {\n  outline: none;\n  border-color: var(--anyapi-primary);\n}\n\n.required {\n  color: var(--anyapi-danger);\n}\n\n.help-text {\n  color: var(--anyapi-text-muted);\n  font-size: 12px;\n}\n\n.filter-mode-toggle {\n  display: flex;\n  gap: 8px;\n  margin: 12px 0;\n}\n\n.mode-btn {\n  padding: 8px 16px;\n  border: 1px solid var(--anyapi-border);\n  background: var(--anyapi-card);\n  border-radius: 6px;\n  cursor: pointer;\n}\n\n.mode-btn.active {\n  background: var(--anyapi-primary);\n  color: white;\n  border-color: var(--anyapi-primary);\n}\n\n.json-preview {\n  background: #1e1e1e;\n  border-radius: 8px;\n  padding: 16px;\n  margin: 16px 0;\n  overflow: auto;\n}\n\n.json-preview pre {\n  margin: 0;\n  color: #f8f8f2;\n  font-family: \"Courier New\", monospace;\n  font-size: 14px;\n}\n\n.actions-grid {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 20px;\n  margin-bottom: 24px;\n}\n\n.action-card {\n  background: var(--anyapi-card);\n  padding: 20px;\n  border-radius: 12px;\n  border: 1px solid var(--anyapi-border);\n}\n\n.action-card h3 {\n  margin-top: 0;\n  color: var(--anyapi-text);\n}\n\n.action-card label {\n  display: block;\n  margin: 8px 0;\n  cursor: pointer;\n}\n\n.integration-footer {\n  display: flex;\n  justify-content: flex-end;\n  gap: 12px;\n  padding: 20px 0;\n  border-top: 1px solid var(--anyapi-border);\n}\n\n.preview-json-btn {\n  background: var(--anyapi-danger);\n  color: white;\n}\n\n/* 響應式 */\n@media (max-width: 960px) {\n  .integration-main {\n    grid-template-columns: 1fr;\n  }\n  .steps-sidebar {\n    order: -1;\n    display: flex;\n    justify-content: center;\n  }\n  .step-item {\n    flex-direction: column;\n    text-align: center;\n  }\n  .actions-grid {\n    grid-template-columns: 1fr;\n  }\n}\n\n/* API Status 專屬樣式 */\n#anyapi-status {\n  background: var(--anyapi-bg);\n  min-height: 100vh;\n}\n\n.anyapi-notice.success {\n  background: linear-gradient(90deg, #10b981 0%, #34d399 100%);\n  color: white;\n  padding: 16px 24px;\n  border-radius: 12px;\n  font-weight: 600;\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  margin: 20px 0;\n  box-shadow: 0 4px 20px rgba(16, 185, 129, 0.2);\n}\n\n.notice-actions {\n  display: flex;\n  gap: 8px;\n}\n\n.integration-card {\n  background: var(--anyapi-card);\n  border: 1px solid var(--anyapi-border);\n  border-radius: 16px;\n  overflow: hidden;\n  margin: 30px 0;\n  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.08);\n}\n\n.integration-row {\n  display: grid;\n  grid-template-columns: 100px 1fr 120px 1fr 100px 1fr;\n  gap: 16px;\n  padding: 24px;\n  align-items: center;\n  flex-wrap: wrap;\n}\n\n@media (max-width: 1280px) {\n  .integration-row {\n    grid-template-columns: 1fr 1fr;\n    gap: 20px;\n  }\n}\n\n@media (max-width: 782px) {\n  .integration-row {\n    grid-template-columns: 1fr;\n    text-align: center;\n  }\n}\n\n.badge {\n  padding: 8px 16px;\n  border-radius: 50px;\n  font-size: 13px;\n  font-weight: 700;\n  text-align: center;\n  white-space: nowrap;\n}\n\n.badge.purple {\n  background: #7b68ee;\n  color: white;\n}\n\n.badge.gray {\n  background: #e2e8f0;\n  color: #475569;\n}\n\n.code-snippet {\n  background: #1e1e1e;\n  color: #a6e22e;\n  padding: 12px 16px;\n  border-radius: 12px;\n  font-family: \"SFMono-Regular\", Consolas, monospace;\n  font-size: 13px;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n  max-width: 100%;\n}\n\n.dark-mode .code-snippet {\n  background: #2d2d2d;\n  color: #89ddff;\n}\n\n.status-action {\n  text-align: center;\n  margin: 40px 0;\n}\n\n.button-warning {\n  background: #f59e0b !important;\n  color: white !important;\n  padding: 14px 32px !important;\n  font-size: 16px;\n  border-radius: 12px;\n}\n\n.status-footer {\n  text-align: center;\n  margin: 60px 0 20px;\n}\n\n/* Dark Mode 增強 */\n.dark-mode .anyapi-notice.success {\n  background: linear-gradient(90deg, #059669 0%, #10b981 100%);\n}\n\n.dark-mode .integration-card {\n  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);\n}\n\n/* 完成頁 */\n.completion-wrapper {\n  text-align: center;\n  max-width: 900px;\n  margin: 0 auto;\n  padding: 20px;\n}\n.completion-header h2 {\n  font-size: 28px;\n  margin: 16px 0;\n  color: var(--anyapi-text);\n}\n.success-icon {\n  font-size: 64px;\n  color: #10b981;\n}\n.completion-actions {\n  margin: 30px 0;\n  display: flex;\n  gap: 12px;\n  justify-content: center;\n  flex-wrap: wrap;\n}\n.integration-card.standalone {\n  margin: 40px auto;\n  max-width: 100%;\n}\n.final-cta {\n  margin: 50px 0;\n}\n.button-hero {\n  padding: 18px 40px !important;\n  font-size: 18px !important;\n  border-radius: 16px;\n  box-shadow: 0 8px 25px rgba(245, 158, 11, 0.4);\n}\n.completion-footer {\n  margin-top: 60px;\n  display: flex;\n  gap: 20px;\n  justify-content: center;\n  flex-wrap: wrap;\n}\n\n/* */\n.test-api-section {\n  margin: 50px auto;\n  text-align: center;\n}\n\n.button-success {\n  background: linear-gradient(135deg, #10b981, #34d399) !important;\n  color: white !important;\n  border: none;\n  padding: 18px 40px !important;\n  font-size: 18px;\n  border-radius: 16px;\n  box-shadow: 0 10px 30px rgba(16, 185, 129, 0.4);\n  transition: all 0.3s;\n}\n\n.button-success:hover {\n  transform: translateY(-3px);\n  box-shadow: 0 15px 40px rgba(16, 185, 129, 0.5);\n}\n\n.button-success.loading {\n  opacity: 0.7;\n  cursor: not-allowed;\n  position: relative;\n}\n.button-success.loading::after {\n  content: \"\";\n  position: absolute;\n  width: 20px;\n  height: 20px;\n  border: 3px solid #fff;\n  border-top-color: transparent;\n  border-radius: 50%;\n  animation: spin 1s linear infinite;\n  right: 20px;\n}\n\n@keyframes spin {\n  to {\n    transform: rotate(360deg);\n  }\n}\n\n.test-result {\n  margin-top: 30px;\n  padding: 20px;\n  border-radius: 12px;\n  font-family: \"SFMono-Regular\", monospace;\n  font-size: 14px;\n  text-align: left;\n  max-width: 800px;\n  margin-left: auto;\n  margin-right: auto;\n  border: 1px solid;\n}\n\n.test-result.success {\n  background: #ecfdf5;\n  border-color: #10b981;\n  color: #065f46;\n}\n\n.test-result.error {\n  background: #fee2e2;\n  border-color: #ef4444;\n  color: #991b1b;\n}\n\n.dark-mode .test-result.success {\n  background: #064e3b;\n  color: #86efac;\n}\n.dark-mode .test-result.error {\n  background: #7f1d1d;\n  color: #fca5a5;\n}\n"
     31  ]
     32}
  • anyapi/trunk/assets/js/anyapi-logs.min.js

    r3414474 r3444238  
    1 !function a(e,r,c){function s(n,t){if(!r[n]){if(!e[n]){var o="function"==typeof require&&require;if(!t&&o)return o(n,!0);if(i)return i(n,!0);throw(t=new Error("Cannot find module '"+n+"'")).code="MODULE_NOT_FOUND",t}o=r[n]={exports:{}},e[n][0].call(o.exports,function(t){return s(e[n][1][t]||t)},o,o.exports,a,e,r,c)}return r[n].exports}for(var i="function"==typeof require&&require,t=0;t<c.length;t++)s(c[t]);return s}({1:[function(t,n,o){"use strict";jQuery(document).ready(function(o){var n,a=1,e="",r=o("#anyapi-logs-body"),t=o("#anyapi-log-search"),c=o("#anyapi-log-refresh"),s=o("#logs-info");function i(t,n){var a=0<arguments.length&&void 0!==t?t:1,t=1<arguments.length&&void 0!==n?n:"";r.html('<tr><td colspan="6" class="loading">Loading...</td></tr>'),o.post(anyapiLogs.ajax_url,{action:"anyapi_get_logs",page:a,search:t,_wpnonce:anyapiLogs.nonce},function(t){var n,o;t.success?(o=t.data.logs,n=t.data.total,0===o.length?(r.html('<tr><td colspan="6" class="no-logs">No logs found</td></tr>'),s.text("0 logs")):(o=o.map(function(t){var n,o,a=80<t.payload.length?t.payload.substring(0,80)+"...":t.payload;return"\n                    <tr>\n                        <td><strong>".concat((n=t.timestamp,o=Date.now(),(o=Math.floor((o-new Date(n).getTime())/1e3))<60?o+" seconds ago":o<3600?Math.floor(o/60)+" minutes ago":o<86400?Math.floor(o/3600)+" hours ago":new Date(n).toLocaleDateString()),'</strong></td>\n                        <td><span class="method method-post">POST</span></td>\n                        <td class="endpoint"><code>').concat(t.api_url,'</code></td>\n                        <td><span class="status-badge ').concat(200<=(o=t.http_code)&&o<300?"success":400<=o&&o<500?"warning":500<=o?"error":"info",'">').concat(t.http_code,"</span></td>\n                        <td>").concat(t.latency?t.latency+"ms":"-",'</td>\n                        <td class="payload"><pre>').concat(a.replace(/</g,"&lt;"),"</pre></td>\n                    </tr>\n                ")}).join(""),r.html(o),s.text("Showing ".concat(20*(a-1)+1,"-").concat(Math.min(20*a,n)," of ").concat(n)))):r.html('<tr><td colspan="6">'.concat(t.data||"Error loading logs","</td></tr>"))})}t.on("input",function(){var t=this;clearTimeout(n),n=setTimeout(function(){e=o(t).val(),i(a=1,e)},500)}),c.on("click",function(){return i(a,e)}),i(),setInterval(function(){return i(a,e)},6e4)})},{}]},{},[1]);
     1!(function e(o, s, r) {
     2  function i(a, t) {
     3    if (!s[a]) {
     4      if (!o[a]) {
     5        var n = "function" == typeof require && require;
     6        if (!t && n) return n(a, !0);
     7        if (c) return c(a, !0);
     8        throw (
     9          ((t = new Error("Cannot find module '" + a + "'")).code =
     10            "MODULE_NOT_FOUND"),
     11          t
     12        );
     13      }
     14      ((n = s[a] = { exports: {} }),
     15        o[a][0].call(
     16          n.exports,
     17          function (t) {
     18            return i(o[a][1][t] || t);
     19          },
     20          n,
     21          n.exports,
     22          e,
     23          o,
     24          s,
     25          r,
     26        ));
     27    }
     28    return s[a].exports;
     29  }
     30  for (
     31    var c = "function" == typeof require && require, t = 0;
     32    t < r.length;
     33    t++
     34  )
     35    i(r[t]);
     36  return i;
     37})(
     38  {
     39    1: [
     40      function (t, a, n) {
     41        "use strict";
     42        jQuery(document).ready(function (c) {
     43          var t,
     44            l = 1,
     45            e = "",
     46            o = "",
     47            d = !1,
     48            u = c("#anyapi-logs-body"),
     49            a = c("#anyapi-log-search"),
     50            n = c("#anyapi-status-filter"),
     51            s = c("#anyapi-log-refresh"),
     52            p = c("#logs-info"),
     53            g = c("#logs-pagination");
     54          function f(t) {
     55            u.html(
     56              '<tr><td colspan="6" style="text-align:center;color:#ef4444;padding:40px;">'.concat(
     57                0 < arguments.length && void 0 !== t
     58                  ? t
     59                  : "Failed to load logs. Please try again.",
     60                "</td></tr>",
     61              ),
     62            );
     63          }
     64          function v(t) {
     65            for (
     66              var t = 0 < arguments.length && void 0 !== t ? t : 1,
     67                a = "",
     68                n = 0;
     69              n < 10;
     70              n++
     71            )
     72              a +=
     73                '\n        <tr class="skeleton-row">\n          <td><div class="skeleton"></div></td>\n          <td><div class="skeleton short"></div></td>\n          <td><div class="skeleton long"></div></td>\n          <td><div class="skeleton status"></div></td>\n          <td><div class="skeleton short"></div></td>\n          <td><div class="skeleton payload"></div></td>\n        </tr>\n      ';
     74            (u.html(a),
     75              d ||
     76                ((d = !0),
     77                (l = t),
     78                c.ajax({
     79                  url: anyapiLogs.ajax_url,
     80                  method: "POST",
     81                  data: {
     82                    action: "anyapi_get_logs",
     83                    page: l,
     84                    search: e,
     85                    status: o,
     86                    _wpnonce: anyapiLogs.nonce,
     87                  },
     88                  timeout: 1e4,
     89                  success: function (t) {
     90                    if (
     91                      (console.log(
     92                        "AJAX debug:",
     93                        t.data.debug,
     94                        "AJAX paginfo:",
     95                        t.data.pageinfo,
     96                        "AJAX params:",
     97                        t.data.pageinfo,
     98                      ),
     99                      t.success)
     100                    ) {
     101                      var a = t.data.logs || [],
     102                        n = t.data.total || 0;
     103                      if (0 === a.length)
     104                        (u.html(
     105                          '<tr><td colspan="6" class="no-logs">No API logs found</td></tr>',
     106                        ),
     107                          p.text("0 results"),
     108                          g.empty(),
     109                          (d = !1));
     110                      else {
     111                        var a = a
     112                            .map(function (t) {
     113                              var a,
     114                                n,
     115                                e =
     116                                  80 < t.payload.length
     117                                    ? t.payload.substring(0, 80) + "..."
     118                                    : t.payload;
     119                              return "\n              <tr>\n                <td><strong>"
     120                                .concat(
     121                                  ((a = t.timestamp),
     122                                  (n = Date.now()),
     123                                  (n = Math.floor(
     124                                    (n - new Date(a).getTime()) / 1e3,
     125                                  )) < 60
     126                                    ? n + " seconds ago"
     127                                    : n < 3600
     128                                      ? Math.floor(n / 60) + " minutes ago"
     129                                      : n < 86400
     130                                        ? Math.floor(n / 3600) + " hours ago"
     131                                        : new Date(a).toLocaleDateString()),
     132                                  '</strong></td>\n                <td><span class="method method-post">POST</span></td>\n                <td class="endpoint"><code>',
     133                                )
     134                                .concat(
     135                                  t.api_url,
     136                                  '</code></td>\n                <td><span class="status-badge ',
     137                                )
     138                                .concat(
     139                                  200 <= (n = t.http_code) && n < 300
     140                                    ? "success"
     141                                    : 400 <= n && n < 500
     142                                      ? "warning"
     143                                      : 500 <= n
     144                                        ? "error"
     145                                        : "info",
     146                                  '">',
     147                                )
     148                                .concat(
     149                                  t.http_code,
     150                                  "</span></td>\n                <td>",
     151                                )
     152                                .concat(
     153                                  t.latency ? t.latency + "ms" : "-",
     154                                  '</td>\n                <td class="payload"><pre>',
     155                                )
     156                                .concat(
     157                                  e.replace(/</g, "&lt;"),
     158                                  "</pre></td>\n              </tr>\n            ",
     159                                );
     160                            })
     161                            .join(""),
     162                          a = (u.html(a), 10 * (l - 1) + 1),
     163                          e = Math.min(10 * l, n);
     164                        p.text(
     165                          "Showing "
     166                            .concat(a, "–")
     167                            .concat(e, " of ")
     168                            .concat(n, " results"),
     169                        );
     170                        var o = l;
     171                        if ((a = n) <= (e = 10) || 0 === a) g.empty();
     172                        else {
     173                          for (
     174                            var a = Math.ceil(a / e),
     175                              s = '<div class="tablenav-pages">',
     176                              e =
     177                                (1 < o &&
     178                                  (s +=
     179                                    '<a class="prev-page button" data-page="'.concat(
     180                                      o - 1,
     181                                      '">« Previous</a>',
     182                                    )),
     183                                Math.max(1, o - 2)),
     184                              r = Math.min(a, o + 2),
     185                              i = e;
     186                            i <= r;
     187                            i++
     188                          )
     189                            s +=
     190                              i === o
     191                                ? '<span class="current-page">'.concat(
     192                                    i,
     193                                    "</span>",
     194                                  )
     195                                : '<a class="page-number button" data-page="'
     196                                    .concat(i, '">')
     197                                    .concat(i, "</a>");
     198                          (o < a &&
     199                            (s +=
     200                              '<a class="next-page button" data-page="'.concat(
     201                                o + 1,
     202                                '">Next »</a>',
     203                              )),
     204                            g.html((s += "</div>")),
     205                            g.find("a[data-page]").on("click", function (t) {
     206                              (t.preventDefault(),
     207                                v(parseInt(c(this).data("page"))));
     208                            }));
     209                        }
     210                      }
     211                    } else (f(t.data || "Error loading logs"), (d = !1));
     212                  },
     213                  error: function (t, a, n) {
     214                    a =
     215                      "timeout" === a
     216                        ? "Request timeout - please try again"
     217                        : "Network error";
     218                    f((a = 403 === t.status ? "Permission denied" : a));
     219                  },
     220                  complete: function () {
     221                    d = !1;
     222                  },
     223                })));
     224          }
     225          (a.add(n).on("input change", function () {
     226            (clearTimeout(t),
     227              (t = setTimeout(function () {
     228                ((e = a.val().trim()), (o = n.val()), v((l = 1)));
     229              }, 600)));
     230          }),
     231            s.on("click", function () {
     232              var t = this;
     233              (c(this).addClass("rotating"),
     234                v(l),
     235                setTimeout(function () {
     236                  return c(t).removeClass("rotating");
     237                }, 600));
     238            }),
     239            v(1),
     240            setInterval(function () {
     241              d || "visible" !== document.visibilityState || v(l);
     242            }, 6e4));
     243        });
     244      },
     245      {},
     246    ],
     247  },
     248  {},
     249  [1],
     250);
  • anyapi/trunk/inc/Admin.php

    r3414465 r3444238  
    371371  }
    372372
     373  public static function getLogInfo( $cache, $where, $params, $perPage, $offset ) {
     374
     375    global $wpdb;
     376    $table    = $wpdb->prefix . 'anyapi_log_anyapi';
     377    $cacheKey = 'anyapi_log_' . md5( $cache . $params );
     378    $results  = wp_cache_get( $cacheKey, 'anyapi_log_cache' );
     379
     380    if ( false === $results ) {
     381      $results = match ( $cache ) {
     382        // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery -- Custom table query required for API logs.
     383        'total'       => $wpdb->get_var( $wpdb->prepare(
     384          "SELECT COUNT(*) FROM $table $where", ...$params
     385        ) ),
     386        'logs'        => $wpdb->get_results( $wpdb->prepare(
     387          "SELECT id, order_id, http_code, api_url, payload, latency, timestamp FROM $table $where ORDER BY timestamp DESC LIMIT %d OFFSET %d", ...array_merge( $params, [ $perPage, $offset ] )
     388        ), ARRAY_A )
     389      };
     390      wp_cache_set( $cacheKey, $results, 'anyapi_log_cache', 300 );
     391      return $results;
     392    }
     393
     394  }
     395
    373396  public static function activatedDay() {
    374397    $activatedTime = get_option( 'anyapi_activated_time' );
    375398    return $activatedTime ?
    376       floor( ( time() - $activatedTime ) / DAY_IN_SECONDS ) : 0;
     399    floor( ( time() - $activatedTime ) / DAY_IN_SECONDS ) : 0;
    377400  }
    378401
     
    459482  public function ajaxGetLogs() {
    460483
    461     check_ajax_referer( 'anyapi_logs_nonce' );
     484    check_ajax_referer('anyapi_logs_nonce');
    462485
    463486    global $wpdb;
    464     $table      = $wpdb->prefix . 'anyapi_log_anyapi';
    465     $page       = max( 1, intval( $_POST[ 'page' ] ?? 1 ) );
    466     $searchRaw  = isset( $_POST[ 'search' ] ) ?? '' ;
    467     $search     = sanitize_text_field( $searchRaw  ?? '' );
    468     $perPage    = 10;
    469     $offset     = ( $page - 1 ) * $perPage;
    470 
    471     $params = [];
    472     if ( ! empty( $search ) ) {
    473       $like   = "%$search%";
    474       $params = [ $like, $like, $like ];
    475     }
    476 
    477     $total  = wp_cache_get( 'anyapi_log_'. $search, 'anyapi_log_cache' );
    478     if ( false === $total ) {
    479       // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery -- Custom table query required for API logs.
    480       $total = $wpdb->get_var( $wpdb->prepare(
    481         "SELECT COUNT(*) FROM %i WHERE (api_url LIKE %s OR payload LIKE %s OR order_id LIKE %s)", $table, ...$params
    482       ) );
    483       wp_cache_set( 'anyapi_log_'. $search, $total, 'anyapi_log_cache', 60 );
    484     }
    485 
    486     // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery -- Custom table query required for API logs.
    487     $logs = $wpdb->get_results( $wpdb->prepare(
    488       "SELECT id, order_id, http_code, api_url, payload, latency, timestamp FROM %i WHERE (api_url LIKE %s OR payload LIKE %s OR order_id LIKE %s) ORDER BY timestamp DESC LIMIT %d OFFSET %d", $table, ...array_merge( $params, [ $perPage, $offset ] )
    489     ), ARRAY_A );
     487    $page         = max( 1, intval( $_POST[ 'page' ] ?? 1 ) );
     488    $search       = trim( sanitize_text_field( wp_unslash( $_POST[ 'search' ] ?? '' ) ) );
     489    $status       = sanitize_text_field( wp_unslash( $_POST[ 'status' ] ?? '' ) );
     490    $perPage      = 10; // line of records per page
     491    $offset       = ( $page - 1 ) * $perPage;
     492    $params       = [];
     493
     494    // conditions
     495    if ( $search !== '' ) {
     496      $like           = '%' . $wpdb->esc_like( $search ) . '%';
     497      $conditions[]   = "(api_url LIKE %s OR payload LIKE %s OR CAST(order_id AS CHAR) LIKE %s)";
     498      $params         = array_merge( $params, [ $like, $like, $like ] );
     499    }
     500
     501    if ( $status === '2xx' ) {
     502      $conditions[] = "http_code >= 200 AND http_code < 300";
     503    } elseif ( $status === '4xx' ) {
     504      $conditions[] = "http_code >= 400 AND http_code < 500";
     505    } elseif ( $status === '5xx' ) {
     506      $conditions[] = "http_code >= 500";
     507    }
     508
     509    $whereClause = '';
     510    if ( ! empty( $conditions ) ) {
     511      $whereClause = 'WHERE ' . implode( ' AND ', $conditions );
     512    }
     513
     514    $total  = self::getLogInfo( 'total', $whereClause, $params, $perPage, $offset );
     515
     516    $logs   = self::getLogInfo( 'logs', $whereClause, $params, $perPage, $offset );
    490517
    491518    wp_send_json_success( [
    492       'logs'  => $logs,
    493       'total' => intval( $total ),
    494       'page'  => $page
     519      'logs'  => $logs ?: [],
     520      'total' => $total,
     521      'page'  => $page,
    495522    ] );
    496523
    497524  }
    498 
    499525
    500526  public function settingsLinks( $links ) {
     
    688714  }
    689715
     716  /**
     717   * Return admin message
     718   * @return array{message: array{system_1...system_2...}}
     719   */
     720 
    690721  public static function getConfig() {
    691722
  • anyapi/trunk/inc/Anyapi.php

    r3414465 r3444238  
    186186    $args = array(
    187187      // Dashboard Header (*)
    188       // array(
    189       //   'id'        => 'anyapi_admin_header',
    190       //   'title'     => '',
    191       //   'callback'  => array( $this->dashboard, 'dashboardHeader' ),
    192       //   'page'      => 'anyapi_admin_header_content',
    193       //   'args'      => array(
    194       //   )
    195       // ),
     188      array(
     189        'id'        => 'anyapi_admin_header',
     190        'title'     => '',
     191        'callback'  => array( $this->dashboard, 'showBanner' ),
     192        'page'      => 'anyapi_admin_header_content',
     193        'args'      => array(
     194        )
     195      ),
    196196      // Dashboard Section
    197197      array(
  • anyapi/trunk/inc/Views/Dashboard.php

    r3414512 r3444238  
    164164          <h2>Real Time API Log</h2>
    165165          <div class="logs-controls">
    166             <!-- <input type="text" id="anyapi-log-search" placeholder="Search endpoint, payload, order ID..."> -->
    167             <button id="anyapi-log-refresh" class="button">Refresh</button>
     166            <input type="text" id="anyapi-log-search" placeholder="Search endpoint, payload, order ID...">
     167            <select id="anyapi-status-filter">
     168              <option value="">All Status</option>
     169              <option value="2xx">Success</option>
     170              <option value="4xx">Client Error</option>
     171              <option value="5xx">Server Error</option>
     172            </select>
     173            <button id="anyapi-log-refresh" class="button">
     174              <!-- <span class="dashicons dashicons-update"></span> Refresh -->
     175            Refresh
     176            </button>
    168177          </div>
    169178        </div>
     
    184193              <tr><td colspan="6" class="loading">Loading logs...</td></tr>
    185194            </tbody>
     195            <!-- <tbody id="anyapi-logs-body"></tbody> -->
    186196          </table>
    187197        </div>
    188198
    189199        <div id="anyapi-logs-footer">
    190           <div id="logs-pagination"></div>
     200          <div id="logs-pagination" class="tablenav-pages"></div>
    191201          <div id="logs-info"></div>
    192202        </div>
  • anyapi/trunk/readme.txt

    r3414465 r3444238  
    44Tags: api, json, webhooks, automation, automator
    55Tested up to: 6.9
    6 Stable tag: 1.1.4
     6Stable tag: 1.1.5
    77License: GPLv2 or later
    88License URI: https://www.gnu.org/licenses/gpl-2.0.html
     
    1616* Features - API Automation, Order Triggers, Woo API Development Tools and API Logs.
    1717* No Coding Required – Ideal for Business Owners, Developers, and Project Managers.
    18 * Fully Tested with WordPress 6.8 and WooCommerce 9.4.1.
     18* Fully Tested with WordPress 6.9 and WooCommerce 9.4.1.
    1919
    2020= E-commerce Automation =
     
    7272
    7373== Screenshots ==
    74 1.**Automation** - WooCommerce Order API
    75 2.**AnyAPI** Dashboard
    76 3.**API logs* - Monitoring your WooCommerce API integration data
    77 4.**Visual Interface** - 1-click JSON Filter
    78 5.**Trigger API** - Turn API status ON to Automate workflows
     741. **Automation** - WooCommerce Order API
     752. **AnyAPI** Dashboard
     763. **API logs** - Monitoring your WooCommerce API integration data
     774. **Visual Interface** - 1-click JSON Filter
     785. **Trigger API** - Turn API status ON to Automate workflows
    7979
    8080== Changelog ==
     81
     82= 1.1.5 (2025-01-21) =
     83* Update  - dasboard real time API log section
     84* Added   - field for searching endpoint, payload, orderid etc..
     85* Added   - http code status filter
     86* Tweak   - better experience for loading "Real Time API Log"
    8187
    8288= 1.1.4 (2025-12-8) =
Note: See TracChangeset for help on using the changeset viewer.