multiuser/subscriptions/notifications
This commit is contained in:
		
							
								
								
									
										160
									
								
								static/css/base.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										160
									
								
								static/css/base.css
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,160 @@ | ||||
| :root { | ||||
|     --bg: #0b0b10; | ||||
|     --panel: #12121a; | ||||
|     --panel-b: #1f2030; | ||||
|     --accent: #3b82f6; | ||||
|     --muted: #9aa0b4; | ||||
|     --text: #e6e6e6; | ||||
| } | ||||
|  | ||||
| body { | ||||
|     font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Arial, sans-serif; | ||||
|     background: var(--bg); | ||||
|     color: var(--text); | ||||
|     margin: 0; | ||||
|     line-height: 1.5; | ||||
| } | ||||
|  | ||||
| .auth-container { | ||||
|     max-width: 400px; | ||||
|     margin: 40px auto; | ||||
|     padding: 20px; | ||||
| } | ||||
|  | ||||
| .auth-form { | ||||
|     background: var(--panel); | ||||
|     border: 1px solid var(--panel-b); | ||||
|     border-radius: 12px; | ||||
|     padding: 20px; | ||||
| } | ||||
|  | ||||
| .auth-form label { | ||||
|     display: block; | ||||
|     margin-bottom: 4px; | ||||
|     color: var(--muted); | ||||
| } | ||||
|  | ||||
| .auth-form input:not([type="checkbox"]) { | ||||
|     width: 100%; | ||||
|     padding: 8px 12px; | ||||
|     border-radius: 8px; | ||||
|     border: 1px solid #2a2a34; | ||||
|     background: #111119; | ||||
|     color: var(--text); | ||||
|     margin-bottom: 16px; | ||||
| } | ||||
|  | ||||
| .auth-form input:focus { | ||||
|     border-color: var(--accent); | ||||
|     outline: none; | ||||
| } | ||||
|  | ||||
| .btn-primary { | ||||
|     display: inline-block; | ||||
|     padding: 10px 20px; | ||||
|     background: var(--accent); | ||||
|     color: #fff; | ||||
|     border: none; | ||||
|     border-radius: 8px; | ||||
|     cursor: pointer; | ||||
|     font-size: 1rem; | ||||
|     text-decoration: none; | ||||
| } | ||||
|  | ||||
| .btn-primary:hover { | ||||
|     filter: brightness(1.1); | ||||
| } | ||||
|  | ||||
| .auth-links { | ||||
|     margin-top: 20px; | ||||
|     text-align: center; | ||||
| } | ||||
|  | ||||
| .auth-links a { | ||||
|     color: var(--accent); | ||||
|     text-decoration: none; | ||||
| } | ||||
|  | ||||
| .auth-links a:hover { | ||||
|     text-decoration: underline; | ||||
| } | ||||
|  | ||||
| .errorlist { | ||||
|     color: #ef4444; | ||||
|     margin: 0 0 16px; | ||||
|     padding: 0; | ||||
|     list-style: none; | ||||
| } | ||||
|  | ||||
| .helptext { | ||||
|     display: block; | ||||
|     font-size: 0.9rem; | ||||
|     color: var(--muted); | ||||
|     margin-bottom: 8px; | ||||
| } | ||||
|  | ||||
| .main-nav { | ||||
|     background: var(--panel); | ||||
|     border-bottom: 1px solid var(--panel-b); | ||||
|     padding: 12px 16px; | ||||
| } | ||||
|  | ||||
| .nav-content { | ||||
|     max-width: 1200px; | ||||
|     margin: 0 auto; | ||||
|     display: flex; | ||||
|     justify-content: space-between; | ||||
|     align-items: center; | ||||
| } | ||||
|  | ||||
| .nav-brand { | ||||
|     color: var(--text); | ||||
|     text-decoration: none; | ||||
|     font-weight: 600; | ||||
|     font-size: 1.2rem; | ||||
| } | ||||
|  | ||||
| .nav-links { | ||||
|     display: flex; | ||||
|     gap: 16px; | ||||
|     align-items: center; | ||||
| } | ||||
|  | ||||
| .nav-links a, | ||||
| .nav-links button { | ||||
|     display: flex; | ||||
|     align-items: center; | ||||
|     gap: 6px; | ||||
|     color: var(--text); | ||||
|     text-decoration: none; | ||||
|     padding: 6px 12px; | ||||
|     border-radius: 6px; | ||||
|     transition: background-color 0.2s; | ||||
| } | ||||
|  | ||||
| .nav-links a:hover, | ||||
| .nav-links button:hover { | ||||
|     background: rgba(255, 255, 255, 0.1); | ||||
| } | ||||
|  | ||||
| .user-info { | ||||
|     color: var(--muted); | ||||
|     margin-right: 8px; | ||||
| } | ||||
|  | ||||
| .nav-register { | ||||
|     background: var(--accent) !important; | ||||
| } | ||||
|  | ||||
| .nav-register:hover { | ||||
|     filter: brightness(1.1); | ||||
|     background: var(--accent); | ||||
| } | ||||
|  | ||||
| .nav-logout { | ||||
|     color: #ef4444 !important; | ||||
| } | ||||
|  | ||||
| .nav-admin { | ||||
|     color: var(--accent) !important; | ||||
| } | ||||
							
								
								
									
										477
									
								
								static/css/index.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										477
									
								
								static/css/index.css
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,477 @@ | ||||
| /* Variables and base resets for the index page */ | ||||
| :root { | ||||
|     --bg: #0b0b10; | ||||
|     --panel: #12121a; | ||||
|     --panel-b: #1f2030; | ||||
|     --accent: #3b82f6; | ||||
|     --muted: #9aa0b4; | ||||
|     --text: #e6e6e6 | ||||
| } | ||||
|  | ||||
| * { | ||||
|     box-sizing: border-box | ||||
| } | ||||
|  | ||||
| body { | ||||
|     font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Arial, sans-serif; | ||||
|     background: var(--bg); | ||||
|     color: var(--text); | ||||
|     margin: 0 | ||||
| } | ||||
|  | ||||
| .wrap { | ||||
|     max-width: 1200px; | ||||
|     margin: 0 auto; | ||||
|     padding: 16px | ||||
| } | ||||
|  | ||||
| h1 { | ||||
|     margin: 4px 0 12px; | ||||
|     font-size: clamp(1.2rem, 2.5vw, 1.6rem) | ||||
| } | ||||
|  | ||||
| /* Controls */ | ||||
| .controls { | ||||
|     display: flex; | ||||
|     flex-wrap: wrap; | ||||
|     align-items: center; | ||||
|     gap: 8px; | ||||
|     margin-bottom: 16px | ||||
| } | ||||
|  | ||||
| .controls form { | ||||
|     display: flex; | ||||
|     align-items: center; | ||||
|     gap: 8px; | ||||
|     flex: 1; | ||||
|     min-width: 220px | ||||
| } | ||||
|  | ||||
| .controls input[type=text] { | ||||
|     flex: 1; | ||||
|     padding: 10px 12px; | ||||
|     border-radius: 10px; | ||||
|     border: 1px solid #2a2a34; | ||||
|     background: #111119; | ||||
|     color: var(--text); | ||||
|     font-size: 1rem; | ||||
|     min-width: 0 | ||||
| } | ||||
|  | ||||
| .controls button[type=submit] { | ||||
|     padding: 10px 14px; | ||||
|     border-radius: 10px; | ||||
|     border: 0; | ||||
|     background: var(--accent); | ||||
|     color: #fff; | ||||
|     cursor: pointer | ||||
| } | ||||
|  | ||||
| .seg { | ||||
|     display: inline-flex; | ||||
|     background: #0f0f17; | ||||
|     border: 1px solid #28293a; | ||||
|     border-radius: 10px; | ||||
|     overflow: hidden | ||||
| } | ||||
|  | ||||
| .seg a { | ||||
|     padding: 8px 12px; | ||||
|     color: var(--text); | ||||
|     text-decoration: none | ||||
| } | ||||
|  | ||||
| .seg a.active { | ||||
|     background: var(--accent); | ||||
|     color: #fff | ||||
| } | ||||
|  | ||||
| /* Cards */ | ||||
| .grid { | ||||
|     display: grid; | ||||
|     grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); | ||||
|     gap: 14px | ||||
| } | ||||
|  | ||||
| @media (min-width:900px) { | ||||
|     .grid { | ||||
|         grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)) | ||||
|     } | ||||
| } | ||||
|  | ||||
| .card { | ||||
|     background: var(--panel); | ||||
|     border: 1px solid var(--panel-b); | ||||
|     border-radius: 12px; | ||||
|     overflow: hidden; | ||||
|     display: flex; | ||||
|     gap: 12px; | ||||
|     padding: 12px; | ||||
|     transition: transform .08s ease, border-color .08s; | ||||
|     cursor: pointer | ||||
| } | ||||
|  | ||||
| .card:active, | ||||
| .card:hover { | ||||
|     transform: translateY(-2px); | ||||
|     border-color: #2a2b44 | ||||
| } | ||||
|  | ||||
| .poster { | ||||
|     width: 110px; | ||||
|     height: 165px; | ||||
|     background: #222233; | ||||
|     border-radius: 8px; | ||||
|     overflow: hidden; | ||||
|     flex: 0 0 auto | ||||
| } | ||||
|  | ||||
| .poster img { | ||||
|     width: 100%; | ||||
|     height: 100%; | ||||
|     object-fit: cover; | ||||
|     display: block | ||||
| } | ||||
|  | ||||
| .meta { | ||||
|     flex: 1 1 auto; | ||||
|     min-width: 0 | ||||
| } | ||||
|  | ||||
| .title { | ||||
|     font-weight: 600; | ||||
|     font-size: 1rem; | ||||
|     margin-bottom: 6px; | ||||
|     white-space: nowrap; | ||||
|     overflow: hidden; | ||||
|     text-overflow: ellipsis | ||||
| } | ||||
|  | ||||
| .episodes { | ||||
|     max-height: 210px; | ||||
|     overflow: auto; | ||||
|     padding-right: 6px | ||||
| } | ||||
|  | ||||
| .ep { | ||||
|     font-size: .92rem; | ||||
|     padding: 6px 0; | ||||
|     border-bottom: 1px dashed #25263a | ||||
| } | ||||
|  | ||||
| .muted { | ||||
|     color: var(--muted); | ||||
|     font-size: .9rem | ||||
| } | ||||
|  | ||||
| .movie-card { | ||||
|     background: var(--panel); | ||||
|     border: 1px solid var(--panel-b); | ||||
|     border-radius: 12px; | ||||
|     padding: 12px | ||||
| } | ||||
|  | ||||
| .movie-card img { | ||||
|     width: 100%; | ||||
|     border-radius: 8px; | ||||
|     margin-bottom: 8px; | ||||
|     display: block; | ||||
|     height: auto | ||||
| } | ||||
|  | ||||
| .section { | ||||
|     margin-top: 22px | ||||
| } | ||||
|  | ||||
| .section h2 { | ||||
|     font-size: 1.1rem; | ||||
|     margin: 12px 0 | ||||
| } | ||||
|  | ||||
| /* Subscription buttons */ | ||||
| .subscribe-btn { | ||||
|     display: inline-block; | ||||
|     padding: 6px 12px; | ||||
|     border-radius: 6px; | ||||
|     border: 1px solid var(--accent); | ||||
|     background: transparent; | ||||
|     color: var(--accent); | ||||
|     text-decoration: none; | ||||
|     font-size: .9rem; | ||||
|     cursor: pointer; | ||||
|     transition: all .2s ease | ||||
| } | ||||
|  | ||||
| .subscribe-btn:hover { | ||||
|     background: var(--accent); | ||||
|     color: #fff | ||||
| } | ||||
|  | ||||
| .subscribe-btn.subscribed { | ||||
|     background: var(--accent); | ||||
|     color: #fff | ||||
| } | ||||
|  | ||||
| .subscribe-btn.unsubscribe { | ||||
|     border-color: #ef4444; | ||||
|     color: #ef4444 | ||||
| } | ||||
|  | ||||
| .subscribe-btn.unsubscribe:hover { | ||||
|     background: #ef4444; | ||||
|     color: #fff | ||||
| } | ||||
|  | ||||
| /* Modal */ | ||||
| .modal-backdrop { | ||||
|     position: fixed; | ||||
|     inset: 0; | ||||
|     background: rgba(10, 12, 20, .55); | ||||
|     backdrop-filter: blur(4px); | ||||
|     display: none; | ||||
|     align-items: center; | ||||
|     justify-content: center; | ||||
|     z-index: 1000; | ||||
|     padding: 12px | ||||
| } | ||||
|  | ||||
| .modal { | ||||
|     width: min(960px, 100%); | ||||
|     max-height: 92vh; | ||||
|     overflow: auto; | ||||
|     background: linear-gradient(180deg, #10121b 0%, #0d0f16 100%); | ||||
|     border: 1px solid #2a2b44; | ||||
|     border-radius: 16px; | ||||
|     box-shadow: 0 24px 80px rgba(0, 0, 0, .6) | ||||
| } | ||||
|  | ||||
| .modal-header { | ||||
|     position: sticky; | ||||
|     grid-template-columns: auto 1fr auto; | ||||
|     top: 0; | ||||
|     z-index: 2; | ||||
|     display: grid; | ||||
|     grid-template-columns: 130px 1fr auto; | ||||
|     gap: 14px; | ||||
|     align-items: center; | ||||
|     padding: 16px; | ||||
|     background: rgba(13, 15, 22, .85); | ||||
|     backdrop-filter: blur(4px); | ||||
|     border-bottom: 1px solid #20223a | ||||
| } | ||||
|  | ||||
| .m-poster { | ||||
|     display: flex; | ||||
|     flex-direction: column; | ||||
|     align-items: center; | ||||
|     gap: 10px; | ||||
|     width: 130px; | ||||
|     height: 195px; | ||||
|     border-radius: 10px; | ||||
|     overflow: hidden; | ||||
|     background: #222233 | ||||
| } | ||||
|  | ||||
| .m-poster img { | ||||
|     width: 100%; | ||||
|     height: 100%; | ||||
|     object-fit: cover; | ||||
|     display: block | ||||
| } | ||||
|  | ||||
| .m-title { | ||||
|     font-size: 1.25rem; | ||||
|     font-weight: 750; | ||||
|     line-height: 1.2; | ||||
|     margin-bottom: 6px | ||||
| } | ||||
|  | ||||
| .m-sub { | ||||
|     color: var(--muted); | ||||
|     font-size: .92rem | ||||
| } | ||||
|  | ||||
| .badges { | ||||
|     display: flex; | ||||
|     flex-wrap: wrap; | ||||
|     gap: 6px; | ||||
|     margin-top: 8px | ||||
| } | ||||
|  | ||||
| .badge { | ||||
|     padding: 4px 8px; | ||||
|     border-radius: 999px; | ||||
|     background: #171a26; | ||||
|     border: 1px solid #2a2b44; | ||||
|     font-size: .82rem; | ||||
|     color: #cfd3ea | ||||
| } | ||||
|  | ||||
| .modal-close { | ||||
|     margin-left: auto; | ||||
|     align-self: start; | ||||
|     background: #1a1f33; | ||||
|     border: 1px solid #2a2b44; | ||||
|     color: #c9cbe3; | ||||
|     width: 36px; | ||||
|     height: 36px; | ||||
|     justify-self: end; | ||||
|     border-radius: 10px; | ||||
|     cursor: pointer; | ||||
|     display: grid; | ||||
|     place-items: center; | ||||
|     font-size: 1.4rem; | ||||
|     line-height: 1; | ||||
|     transition: transform .08s ease, background .12s ease, border-color .12s ease | ||||
| } | ||||
|  | ||||
| .modal-close:hover { | ||||
|     background: #243055; | ||||
|     border-color: #3b4aa0; | ||||
|     transform: translateY(-1px) | ||||
| } | ||||
|  | ||||
| .modal-body { | ||||
|     padding: 16px; | ||||
|     display: grid; | ||||
|     grid-template-columns: 1fr; | ||||
|     gap: 16px | ||||
| } | ||||
|  | ||||
| @media (min-width:900px) { | ||||
|     .modal-body { | ||||
|         grid-template-columns: 1.2fr .8fr | ||||
|     } | ||||
| } | ||||
|  | ||||
| .section-block { | ||||
|     background: #101327; | ||||
|     border: 1px solid #20223a; | ||||
|     border-radius: 12px; | ||||
|     padding: 14px | ||||
| } | ||||
|  | ||||
| .section-title { | ||||
|     font-size: 1rem; | ||||
|     font-weight: 650; | ||||
|     margin: 0 0 8px | ||||
| } | ||||
|  | ||||
| .section-divider { | ||||
|     height: 1px; | ||||
|     background: #20223a; | ||||
|     margin: 10px 0; | ||||
|     opacity: .9 | ||||
| } | ||||
|  | ||||
| .ep-row { | ||||
|     border-bottom: 1px dashed #262947; | ||||
|     padding: 8px 0; | ||||
|     font-size: .94rem | ||||
| } | ||||
|  | ||||
| .ep-row:last-child { | ||||
|     border-bottom: 0 | ||||
| } | ||||
|  | ||||
| /* control */ | ||||
| .controls input[type=number] { | ||||
|     width: 90px; | ||||
|     padding: 10px 12px; | ||||
|     border-radius: 10px; | ||||
|     border: 1px solid #2a2a34; | ||||
|     background: #111119; | ||||
|     color: var(--text); | ||||
|     font-size: 1rem; | ||||
|     appearance: textfield; | ||||
|     -moz-appearance: textfield | ||||
| } | ||||
|  | ||||
| .btn-subscribe { | ||||
|     padding: 8px 14px; | ||||
|     border-radius: 10px; | ||||
|     background: #1f6f3a; | ||||
|     border: 1px solid #2a2b34; | ||||
|     color: #fff; | ||||
|     cursor: pointer; | ||||
|     font-weight: 600; | ||||
|     transition: background .15s ease, transform .08s ease | ||||
| } | ||||
|  | ||||
| .btn-subscribe:hover { | ||||
|     background: #2b8f4d | ||||
| } | ||||
|  | ||||
| .btn-subscribe:active { | ||||
|     transform: translateY(1px) | ||||
| } | ||||
|  | ||||
| .subscribed { | ||||
|     outline: 3px solid #1f6f3a; | ||||
|     outline-offset: 2px | ||||
| } | ||||
|  | ||||
| .controls input[type=number]::-webkit-outer-spin-button, | ||||
| .controls input[type=number]::-webkit-inner-spin-button { | ||||
|     -webkit-appearance: none; | ||||
|     margin: 0 | ||||
| } | ||||
|  | ||||
| .controls input[type=number]:focus { | ||||
|     border-color: var(--accent); | ||||
|     outline: none | ||||
| } | ||||
|  | ||||
| .movie-card { | ||||
|     background: var(--panel); | ||||
|     border: 1px solid var(--panel-b); | ||||
|     border-radius: 12px; | ||||
|     padding: 12px; | ||||
|     cursor: pointer; | ||||
|     transition: transform .08s ease, border-color .08s | ||||
| } | ||||
|  | ||||
| .movie-card:hover, | ||||
| .movie-card:focus-within { | ||||
|     transform: translateY(-2px); | ||||
|     border-color: #2a2b44 | ||||
| } | ||||
|  | ||||
| .movie-card:active { | ||||
|     transform: translateY(0) | ||||
| } | ||||
|  | ||||
| /* Error toast */ | ||||
| .error-message { | ||||
|     position: fixed; | ||||
|     bottom: 20px; | ||||
|     left: 50%; | ||||
|     transform: translateX(-50%); | ||||
|     background: #ef4444; | ||||
|     color: #fff; | ||||
|     padding: 12px 24px; | ||||
|     border-radius: 8px; | ||||
|     box-shadow: 0 4px 6px rgba(0, 0, 0, .1); | ||||
|     z-index: 1000; | ||||
|     animation: slideUp .3s ease | ||||
| } | ||||
|  | ||||
| @keyframes slideUp { | ||||
|     from { | ||||
|         transform: translate(-50%, 100%); | ||||
|         opacity: 0 | ||||
|     } | ||||
|  | ||||
|     to { | ||||
|         transform: translate(-50%, 0); | ||||
|         opacity: 1 | ||||
|     } | ||||
| } | ||||
|  | ||||
| /* Debug info */ | ||||
| .debug-info { | ||||
|     text-align: right; | ||||
|     margin: 0 16px 12px; | ||||
|     color: var(--muted); | ||||
|     font-size: .9rem | ||||
| } | ||||
							
								
								
									
										155
									
								
								static/css/profile.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										155
									
								
								static/css/profile.css
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,155 @@ | ||||
| .profile-container { | ||||
|     max-width: 800px; | ||||
|     margin: 0 auto; | ||||
|     padding: 20px | ||||
| } | ||||
|  | ||||
| .profile-section { | ||||
|     background: var(--panel); | ||||
|     border: 1px solid var(--panel-b); | ||||
|     border-radius: 12px; | ||||
|     padding: 20px; | ||||
|     margin: 20px 0 | ||||
| } | ||||
|  | ||||
| .subscription-list { | ||||
|     display: grid; | ||||
|     grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); | ||||
|     gap: 12px; | ||||
|     margin-top: 12px | ||||
| } | ||||
|  | ||||
| .subscription-item { | ||||
|     display: flex; | ||||
|     gap: 12px; | ||||
|     background: rgba(0, 0, 0, .2); | ||||
|     padding: 12px; | ||||
|     border-radius: 8px; | ||||
|     transition: transform .2s ease; | ||||
|     cursor: pointer | ||||
| } | ||||
|  | ||||
| .subscription-item:hover { | ||||
|     transform: translateY(-2px); | ||||
|     background: rgba(0, 0, 0, .3) | ||||
| } | ||||
|  | ||||
| .subscription-poster { | ||||
|     width: 80px; | ||||
|     height: 120px; | ||||
|     object-fit: cover; | ||||
|     border-radius: 6px; | ||||
|     box-shadow: 0 2px 4px rgba(0, 0, 0, .2) | ||||
| } | ||||
|  | ||||
| .subscription-info { | ||||
|     display: flex; | ||||
|     flex-direction: column; | ||||
|     justify-content: center | ||||
| } | ||||
|  | ||||
| .subscription-title { | ||||
|     font-weight: 600; | ||||
|     margin-bottom: 4px | ||||
| } | ||||
|  | ||||
| .subscription-date { | ||||
|     font-size: .9rem; | ||||
|     color: var(--muted); | ||||
|     margin-bottom: 4px | ||||
| } | ||||
|  | ||||
| .subscription-overview { | ||||
|     font-size: .9rem; | ||||
|     color: var(--muted); | ||||
|     line-height: 1.4; | ||||
|     opacity: .9 | ||||
| } | ||||
|  | ||||
| .messages { | ||||
|     margin-bottom: 20px | ||||
| } | ||||
|  | ||||
| .message { | ||||
|     padding: 12px; | ||||
|     border-radius: 8px; | ||||
|     margin-bottom: 8px | ||||
| } | ||||
|  | ||||
| .message.success { | ||||
|     background: #1f6f3a; | ||||
|     color: #fff | ||||
| } | ||||
|  | ||||
| .message.error { | ||||
|     background: #ef4444; | ||||
|     color: #fff | ||||
| } | ||||
|  | ||||
| .btn-secondary { | ||||
|     display: inline-block; | ||||
|     padding: 8px 16px; | ||||
|     background: #1f2030; | ||||
|     color: var(--text); | ||||
|     text-decoration: none; | ||||
|     border-radius: 8px; | ||||
|     border: 1px solid #2a2b44 | ||||
| } | ||||
|  | ||||
| .btn-secondary:hover { | ||||
|     background: #2a2b44 | ||||
| } | ||||
|  | ||||
| .mt-4 { | ||||
|     margin-top: 16px | ||||
| } | ||||
|  | ||||
| .badge { | ||||
|     display: inline-block; | ||||
|     padding: 4px 8px; | ||||
|     border-radius: 999px; | ||||
|     font-size: .875rem; | ||||
|     font-weight: 500 | ||||
| } | ||||
|  | ||||
| .badge-admin { | ||||
|     background-color: #1f6f3a; | ||||
|     color: #fff | ||||
| } | ||||
|  | ||||
| .jellyfin-info { | ||||
|     margin-top: 24px; | ||||
|     padding: 16px; | ||||
|     background: var(--panel); | ||||
|     border: 1px solid var(--panel-b); | ||||
|     border-radius: 8px | ||||
| } | ||||
|  | ||||
| .jellyfin-info h4 { | ||||
|     margin: 0 0 12px 0; | ||||
|     color: var(--accent) | ||||
| } | ||||
|  | ||||
| .compact-form .form-row { | ||||
|     display: grid; | ||||
|     grid-template-columns: 140px 1fr; | ||||
|     gap: 10px; | ||||
|     align-items: center; | ||||
|     margin-bottom: 10px | ||||
| } | ||||
|  | ||||
| .text-input { | ||||
|     width: 100%; | ||||
|     max-width: 100%; | ||||
|     min-width: 0; | ||||
|     padding: 10px 12px; | ||||
|     border-radius: 10px; | ||||
|     border: 1px solid #2a2a34; | ||||
|     background: #111119; | ||||
|     color: var(--text) | ||||
| } | ||||
|  | ||||
| .text-input:focus { | ||||
|     border-color: var(--accent); | ||||
|     outline: none | ||||
| } | ||||
							
								
								
									
										178
									
								
								static/css/settings.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										178
									
								
								static/css/settings.css
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,178 @@ | ||||
| :root { | ||||
|     --bg: #0b0b10; | ||||
|     --panel: #12121a; | ||||
|     --panel-b: #1f2030; | ||||
|     --accent: #3b82f6; | ||||
|     --muted: #9aa0b4; | ||||
|     --text: #e6e6e6 | ||||
| } | ||||
|  | ||||
| * { | ||||
|     box-sizing: border-box | ||||
| } | ||||
|  | ||||
| body { | ||||
|     background: var(--bg); | ||||
|     color: var(--text); | ||||
|     font-family: system-ui, Segoe UI, Roboto, Arial, sans-serif; | ||||
|     margin: 0 | ||||
| } | ||||
|  | ||||
| .wrap { | ||||
|     max-width: 1000px; | ||||
|     margin: 0 auto; | ||||
|     padding: 16px | ||||
| } | ||||
|  | ||||
| a { | ||||
|     color: #cfd3ea; | ||||
|     text-decoration: none | ||||
| } | ||||
|  | ||||
| .topbar { | ||||
|     display: flex; | ||||
|     align-items: center; | ||||
|     justify-content: space-between; | ||||
|     margin-bottom: 16px | ||||
| } | ||||
|  | ||||
| .btn { | ||||
|     padding: 10px 14px; | ||||
|     border-radius: 10px; | ||||
|     border: 1px solid #2a2a34; | ||||
|     background: #111119; | ||||
|     color: #fff; | ||||
|     cursor: pointer | ||||
| } | ||||
|  | ||||
| .btn-primary { | ||||
|     background: var(--accent); | ||||
|     border-color: transparent | ||||
| } | ||||
|  | ||||
| .grid { | ||||
|     display: grid; | ||||
|     gap: 16px | ||||
| } | ||||
|  | ||||
| @media(min-width:900px) { | ||||
|     .grid { | ||||
|         grid-template-columns: 1fr 1fr | ||||
|     } | ||||
| } | ||||
|  | ||||
| .card { | ||||
|     background: var(--panel); | ||||
|     border: 1px solid var(--panel-b); | ||||
|     border-radius: 12px; | ||||
|     padding: 14px | ||||
| } | ||||
|  | ||||
| .card h2 { | ||||
|     margin: 0 0 10px; | ||||
|     font-size: 1.05rem | ||||
| } | ||||
|  | ||||
| .row { | ||||
|     display: grid; | ||||
|     grid-template-columns: 160px minmax(0, 1fr); | ||||
|     gap: 10px; | ||||
|     align-items: center; | ||||
|     margin-bottom: 10px | ||||
| } | ||||
|  | ||||
| .row label { | ||||
|     color: #c9cbe3 | ||||
| } | ||||
|  | ||||
| .row input, | ||||
| .row select { | ||||
|     width: 100%; | ||||
|     padding: 10px 12px; | ||||
|     border-radius: 10px; | ||||
|     border: 1px solid #2a2a34; | ||||
|     background: #111119; | ||||
|     color: var(--text) | ||||
| } | ||||
|  | ||||
| .help { | ||||
|     color: var(--muted); | ||||
|     font-size: .9rem | ||||
| } | ||||
|  | ||||
| .msgs { | ||||
|     margin-bottom: 10px | ||||
| } | ||||
|  | ||||
| .msg { | ||||
|     background: #0f1425; | ||||
|     border: 1px solid #283058; | ||||
|     border-radius: 10px; | ||||
|     padding: 10px; | ||||
|     margin-bottom: 8px | ||||
| } | ||||
|  | ||||
| .input-wide { | ||||
|     width: 100% !important; | ||||
|     max-width: 100%; | ||||
|     min-width: 0; | ||||
|     display: block | ||||
| } | ||||
|  | ||||
| .row input, | ||||
| .row select, | ||||
| .row textarea { | ||||
|     width: 100%; | ||||
|     max-width: 100%; | ||||
|     min-width: 0; | ||||
|     display: block | ||||
| } | ||||
|  | ||||
| .inline>input, | ||||
| .inline>.django-url, | ||||
| .inline>.django-password { | ||||
|     min-width: 0; | ||||
|     width: 100% | ||||
| } | ||||
|  | ||||
| .inline-actions { | ||||
|     display: inline-flex; | ||||
|     align-items: center; | ||||
|     gap: 8px; | ||||
|     min-width: 220px; | ||||
|     justify-content: flex-end | ||||
| } | ||||
|  | ||||
| .btn:disabled { | ||||
|     opacity: .6; | ||||
|     cursor: default | ||||
| } | ||||
|  | ||||
| .badge { | ||||
|     padding: 6px 10px; | ||||
|     border-radius: 999px; | ||||
|     font-size: .85rem; | ||||
|     border: 1px solid #2a2a34; | ||||
|     background: #111119; | ||||
|     color: #cfd3ea; | ||||
|     white-space: nowrap; | ||||
|     max-width: 140px; | ||||
|     overflow: hidden; | ||||
|     text-overflow: ellipsis | ||||
| } | ||||
|  | ||||
| .badge.ok { | ||||
|     border-color: #1f6f3a; | ||||
|     background: #10331f; | ||||
|     color: #a7e3bd | ||||
| } | ||||
|  | ||||
| .badge.err { | ||||
|     border-color: #6f1f2a; | ||||
|     background: #341016; | ||||
|     color: #f1a3b0 | ||||
| } | ||||
|  | ||||
| .badge.muted { | ||||
|     opacity: .8 | ||||
| } | ||||
							
								
								
									
										71
									
								
								static/css/setup.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								static/css/setup.css
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,71 @@ | ||||
| .setup-container { | ||||
|     max-width: 800px; | ||||
|     margin: 40px auto; | ||||
|     padding: 20px | ||||
| } | ||||
|  | ||||
| .setup-intro { | ||||
|     color: var(--muted); | ||||
|     font-size: 1.1em; | ||||
|     margin-bottom: 30px | ||||
| } | ||||
|  | ||||
| .setup-section { | ||||
|     background: var(--panel); | ||||
|     border: 1px solid var(--panel-b); | ||||
|     border-radius: 12px; | ||||
|     padding: 20px; | ||||
|     margin-bottom: 20px | ||||
| } | ||||
|  | ||||
| .setup-section h2 { | ||||
|     margin: 0 0 20px; | ||||
|     font-size: 1.2em | ||||
| } | ||||
|  | ||||
| .form-group { | ||||
|     margin-bottom: 16px | ||||
| } | ||||
|  | ||||
| .form-group label { | ||||
|     display: block; | ||||
|     margin-bottom: 8px; | ||||
|     color: var(--muted) | ||||
| } | ||||
|  | ||||
| .form-group input { | ||||
|     width: 100%; | ||||
|     padding: 10px; | ||||
|     border-radius: 8px; | ||||
|     border: 1px solid var(--panel-b); | ||||
|     background: rgba(0, 0, 0, .2); | ||||
|     color: var(--text) | ||||
| } | ||||
|  | ||||
| .form-group input:focus { | ||||
|     outline: none; | ||||
|     border-color: var(--accent) | ||||
| } | ||||
|  | ||||
| .help { | ||||
|     margin-top: 4px; | ||||
|     font-size: .9em; | ||||
|     color: var(--muted) | ||||
| } | ||||
|  | ||||
| .setup-submit { | ||||
|     display: block; | ||||
|     width: 100%; | ||||
|     padding: 12px; | ||||
|     background: var(--accent); | ||||
|     color: #fff; | ||||
|     border: none; | ||||
|     border-radius: 8px; | ||||
|     font-size: 1.1em; | ||||
|     cursor: pointer; | ||||
|     transition: filter .2s | ||||
| } | ||||
|  | ||||
| .setup-submit:hover { | ||||
|     filter: brightness(1.1) | ||||
| } | ||||
		Reference in New Issue
	
	Block a user