@@ -304,7 +304,7 @@ pub async fn oauth_authorize(
304304 // The page shows a brief message while the app opens
305305 // Industry standard: Don't auto-close, let user close after approval
306306 let html = format ! (
307- r#"<!DOCTYPE html>
307+ r## "<!DOCTYPE html>
308308<html lang="en">
309309<head>
310310 <meta charset="utf-8">
@@ -318,24 +318,18 @@ pub async fn oauth_authorize(
318318 display: flex;
319319 align-items: center;
320320 justify-content: center;
321- background: linear-gradient(135deg, #0f0f23 0%, #1a1a2e 50%, #16213e 100%);
321+ background: linear-gradient(135deg, #1a1210 0%, #2a1c17 50%, #1e1412 100%);
322322 color: #e6e6e6;
323323 padding: 1rem;
324324 }}
325325 .container {{
326326 text-align: center;
327327 max-width: 400px;
328328 }}
329- .icon {{
329+ .logo {{
330330 width: 64px;
331331 height: 64px;
332332 margin: 0 auto 1.5rem;
333- background: linear-gradient(135deg, #64ffda 0%, #00bcd4 100%);
334- border-radius: 16px;
335- display: flex;
336- align-items: center;
337- justify-content: center;
338- font-size: 2rem;
339333 }}
340334 h1 {{
341335 font-size: 1.5rem;
@@ -344,34 +338,34 @@ pub async fn oauth_authorize(
344338 color: #fff;
345339 }}
346340 .subtitle {{
347- color: #8892b0 ;
341+ color: #a0917e ;
348342 margin-bottom: 2rem;
349343 line-height: 1.5;
350344 }}
351345 .client-info {{
352- background: rgba(255,255,255 ,0.05 );
353- border: 1px solid rgba(255,255,255 ,0.1 );
346+ background: rgba(218,119,86 ,0.06 );
347+ border: 1px solid rgba(218,119,86 ,0.15 );
354348 border-radius: 12px;
355349 padding: 1rem;
356350 margin-bottom: 1.5rem;
357351 }}
358352 .client-name {{
359353 font-weight: 500;
360- color: #64ffda ;
354+ color: #DA7756 ;
361355 margin-bottom: 0.25rem;
362356 }}
363357 .client-id {{
364358 font-size: 0.75rem;
365- color: #6a7394 ;
359+ color: #7a6e62 ;
366360 word-break: break-all;
367361 }}
368362 .action {{
369363 margin-top: 1.5rem;
370364 }}
371365 .btn {{
372366 display: inline-block;
373- background: linear-gradient(135deg, #64ffda 0%, #00bcd4 100%);
374- color: #0f0f23 ;
367+ background: linear-gradient(135deg, #DA7756 0%, #B8553A 100%);
368+ color: #fff ;
375369 padding: 0.75rem 2rem;
376370 border-radius: 8px;
377371 text-decoration: none;
@@ -383,12 +377,12 @@ pub async fn oauth_authorize(
383377 }}
384378 .btn:hover {{
385379 transform: translateY(-2px);
386- box-shadow: 0 4px 20px rgba(100, 255, 218 , 0.3 );
380+ box-shadow: 0 4px 20px rgba(218, 119, 86 , 0.35 );
387381 }}
388382 .btn-secondary {{
389383 background: transparent;
390384 border: 1px solid rgba(255,255,255,0.2);
391- color: #8892b0 ;
385+ color: #a0917e ;
392386 margin-top: 1rem;
393387 }}
394388 .btn-secondary:hover {{
@@ -400,28 +394,34 @@ pub async fn oauth_authorize(
400394 .note {{
401395 margin-top: 2rem;
402396 font-size: 0.875rem;
403- color: #6a7394 ;
397+ color: #7a6e62 ;
404398 }}
405399 </style>
406400</head>
407401<body>
408402 <div class="container">
409- <div class="icon">🔐</div>
403+ <svg class="logo" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
404+ <defs><linearGradient id="bg" x1="0" y1="0" x2="32" y2="32" gradientUnits="userSpaceOnUse"><stop offset="0%" stop-color="#DA7756"/><stop offset="100%" stop-color="#B8553A"/></linearGradient></defs>
405+ <rect width="32" height="32" rx="7" fill="url(#bg)"/>
406+ <circle cx="6" cy="9" r="2.8" fill="white" opacity="0.85"/><circle cx="6" cy="16" r="3" fill="white"/><circle cx="6" cy="23" r="2.8" fill="white" opacity="0.85"/>
407+ <path d="M 10 21 V 11 L 13 18 L 16 10 L 19 18 L 22 11 V 21" stroke="white" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" fill="none"/>
408+ <circle cx="26" cy="9" r="2.8" fill="white" opacity="0.85"/><circle cx="26" cy="16" r="3" fill="white"/><circle cx="26" cy="23" r="2.8" fill="white" opacity="0.85"/>
409+ </svg>
410410 <h1>Authorization Request</h1>
411411 <p class="subtitle">
412412 Complete authorization in {app_name}
413413 </p>
414-
414+
415415 <div class="client-info">
416416 <div class="client-name">{display_name}</div>
417417 <div class="client-id">wants to connect</div>
418418 </div>
419-
419+
420420 <div class="action">
421421 <a href="{deep_link_url}" class="btn">Open {app_name}</a>
422422 <button class="btn btn-secondary" onclick="window.close()">Close this tab</button>
423423 </div>
424-
424+
425425 <p class="note">
426426 If prompted by your browser, click "Open" to allow.
427427 </p>
@@ -434,7 +434,7 @@ pub async fn oauth_authorize(
434434 iframe.style.display = 'none';
435435 iframe.src = "{deep_link_url}";
436436 document.body.appendChild(iframe);
437-
437+
438438 // Fallback: remove iframe after a short delay
439439 // The protocol handler should have fired by then
440440 setTimeout(function() {{
@@ -445,7 +445,7 @@ pub async fn oauth_authorize(
445445 }})();
446446 </script>
447447</body>
448- </html>"#
448+ </html>"##
449449 ) ;
450450
451451 axum:: response:: Html ( html) . into_response ( )
0 commit comments