+ .arrow-icon {
+ transition: transform 0.2s ease;
+ }
-
-
- [[ $exception_class ]]
-
-
- [[ $error_message]]
-
+ /* ── Clickable rows ── */
+ .frame-toggle,
+ .headers-toggle {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+ padding: 12px 16px;
+ cursor: pointer;
+ user-select: none;
+ }
+
+ .frame-toggle:hover {
+ background: rgba(0, 0, 0, .02);
+ }
+
+ html.dark .frame-toggle:hover {
+ background: rgba(255, 255, 255, .02);
+ }
+
+ .headers-toggle:hover {
+ background: rgba(0, 0, 0, .02);
+ }
+
+ html.dark .headers-toggle:hover {
+ background: rgba(255, 255, 255, .02);
+ }
+
+ .exception-pill {
+ display: inline-flex;
+ align-items: center;
+ gap: 6px;
+ padding: 3px 10px 3px 7px;
+ border-radius: 6px;
+ font-size: 11px;
+ font-weight: 600;
+ letter-spacing: 0.01em;
+ background: rgba(225, 29, 72, 0.08);
+ border: 1px solid rgba(225, 29, 72, 0.18);
+ color: #e11d48;
+ }
+
+ html.dark .exception-pill {
+ background: rgba(251, 113, 133, 0.1);
+ border-color: rgba(251, 113, 133, 0.2);
+ color: #fb7185;
+ }
+
+ .exception-pill-dot {
+ width: 6px;
+ height: 6px;
+ border-radius: 50%;
+ background: currentColor;
+ animation: pulse-dot 2s ease infinite;
+ flex-shrink: 0;
+ }
+
+ @keyframes pulse-dot {
+
+ 0%,
+ 100% {
+ opacity: .8;
+ transform: scale(1);
+ }
+
+ 50% {
+ opacity: .3;
+ transform: scale(.6);
+ }
+ }
+
+ .hero-glow {
+ position: absolute;
+ top: -80px;
+ right: -80px;
+ width: 500px;
+ height: 400px;
+ border-radius: 50%;
+ pointer-events: none;
+ }
+
+ .status-badge {
+ display: inline-flex;
+ align-items: center;
+ gap: 6px;
+ padding: 4px 10px 4px 7px;
+ border-radius: 6px;
+ font-size: 11px;
+ font-weight: 700;
+ background: rgba(225, 29, 72, 0.09);
+ border: 1px solid rgba(225, 29, 72, 0.2);
+ color: #e11d48;
+ }
+
+ html.dark .status-badge {
+ background: rgba(251, 113, 133, 0.09);
+ border-color: rgba(251, 113, 133, 0.2);
+ color: #fb7185;
+ }
+
+ .status-badge-dot {
+ width: 6px;
+ height: 6px;
+ border-radius: 50%;
+ background: currentColor;
+ animation: pulse-dot 1.8s ease infinite;
+ }
+
+ .code-line:not(.code-line-error):hover {
+ background: rgba(0, 0, 0, .025);
+ }
+
+ html.dark .code-line:not(.code-line-error):hover {
+ background: rgba(255, 255, 255, .02);
+ }
+
+ .param-dot-line {
+ flex-grow: 1;
+ border-bottom: 1px dashed rgba(0, 0, 0, .1);
+ margin: 0 8px 4px;
+ }
+
+ html.dark .param-dot-line {
+ border-bottom-color: rgba(255, 255, 255, .07);
+ }
+
+ .line-badge {
+ display: inline-flex;
+ align-items: center;
+ padding: 2px 8px;
+ border-radius: 5px;
+ font-size: 10px;
+ font-weight: 700;
+ letter-spacing: 0.05em;
+ background: rgba(225, 29, 72, 0.08);
+ border: 1px solid rgba(225, 29, 72, 0.18);
+ color: #e11d48;
+ }
+
+ html.dark .line-badge {
+ background: rgba(251, 113, 133, 0.08);
+ border-color: rgba(251, 113, 133, 0.18);
+ color: #fb7185;
+ }
+
+ .route-live-dot {
+ width: 7px;
+ height: 7px;
+ border-radius: 50%;
+ background: #e11d48;
+ animation: pulse-dot 1.6s ease infinite;
+ }
+
+ html.dark .route-live-dot {
+ background: #fb7185;
+ }
+
+ .request-bar {
+ border-top: 1px solid rgba(0, 0, 0, .06);
+ border-bottom: 1px solid rgba(0, 0, 0, .06);
+ background: rgba(255, 255, 255, .4);
+ backdrop-filter: blur(4px);
+ }
+
+ html.dark .request-bar {
+ border-top-color: rgba(255, 255, 255, .05);
+ border-bottom-color: rgba(255, 255, 255, .05);
+ background: rgba(255, 255, 255, .02);
+ }
+
+ .frame-count-badge {
+ display: inline-flex;
+ align-items: center;
+ padding: 2px 8px;
+ border-radius: 99px;
+ font-size: 10px;
+ font-weight: 700;
+ background: rgba(0, 0, 0, .05);
+ border: 1px solid rgba(0, 0, 0, .07);
+ color: #64748b;
+ }
+
+ html.dark .frame-count-badge {
+ background: rgba(255, 255, 255, .06);
+ border-color: rgba(255, 255, 255, .06);
+ color: #94a3b8;
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [[ $exception_class ]]
-
-
-
-
-
-
-
-
DOPPAR
+
+
+
+
+
+
+ Doppar
[[ $doppar_version ]]
-
-
PHP
+
+ PHP
[[ $php_version ]]
+
+
+ [[ $error_message ]]
+
-
-
- [[ $request_method]]
-
-
[[ $request_url ]]
-
-
- [[ $timestamp ]]
+
+
+
+
+
[[ $request_method ]]
+
[[ $request_url ]]
+
+
-
-
-
-
-
[[ $error_file ]]
+
+
+
+
+
Date
+
+
[[ $timestamp ]]
-
-
-
[[! $contents !]]
+
+
Status Code
+
+
+
+ [[ $status_code ]]
+
-
-
-
-
-
- Stack Trace
-
-
-
-
- #include('trace-frames', ['traces' => $traces])
-
+
+
Method
+
+
+ [[ $request_method ]]
+
-
-
-
-
-
-
-
-
Server
-
[[ $server_software ]]
-
-
-
Platform
-
[[ $platform ]]
-
-
-
+
+
-
-
-
-
-
Current Usage
-
[[ number_format($memory_usage / 1024 / 1024, 2) ]] MB
-
-
-
Peak Usage
-
[[ number_format($peack_memory_usage / 1024 / 1024, 2) ]] MB
+
+
+
+
+
[[ $error_file ]]
+
Line [[ $error_line ]]
+
+
-
-
- #if ($user_info)
-
-
-
ID
-
[[ $user_info['id'] ]]
-
-
-
Email
-
[[ $user_info['email'] ]]
+
+
-
-
-
-
-
-
Request Body
+
+ #include('trace-frames', ['traces' => $traces])
- #if (!empty($request_body))
-
- #endif
- #if (!empty($request_body))
-
-
[[ json_encode($request_body, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) ]]
-
- #else
-
-
-
// EMPTY REQUEST BODY
-
- #endif
-
-
-
-
-
Routing
+
+
+ #include('template-headers', ['headers' => $headers])
-
- #if (!empty($routing['controller']))
-
-
Controller
-
[[ $routing['controller'] ]]
+
+
+
+
+
+
+
+
Server
+
[[ $server_software ]]
+
+
+
Platform
+
[[ $platform ]]
+
- #endif
- #if (!empty($routing['middleware']))
-
-
Middleware
-
- #foreach ($routing['middleware'] as $mw)
-
[[ $mw ]]
- #endforeach
+
+
+
+
+
+
Current Usage
+
[[ number_format($memory_usage / 1024 / 1024, 2) ]] MB
+
+
+
Peak Usage
+
[[ number_format($peack_memory_usage / 1024 / 1024, 2) ]] MB
+
- #endif
+
+
+
+
+ #if ($user_info)
+
+
+
ID
+
[[ $user_info['id'] ]]
+
+
+
Email
+
[[ $user_info['email'] ]]
+
+
+ #else
+
+ #endif
+
-
-
Route Parameters
- #if (!empty($routing['params']))
-
- #foreach ($routing['params'] as $key => $value)
-
-
[[ $key ]]
-
[[ $value ]]
+
+
+
+
- #endforeach
+
Request Body
+ #if (!empty($request_body))
+
+ #endif
+
+ #if (!empty($request_body))
+
+
[[ json_encode($request_body, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) ]]
#else
-
-
-
-
-
-
-
-
+
+
Controller Action
+ #if(!empty($current_route_action))
+
+ [[ $current_route_action ]]
+
+ #else
+
Closure / No Action
+ #endif
+
+
-
+
+