jebin2 commited on
Commit
d7e0151
Β·
1 Parent(s): 0ec22b2
Files changed (1) hide show
  1. index.html +204 -16
index.html CHANGED
@@ -100,20 +100,51 @@
100
  z-index: 2;
101
  }
102
 
103
- .login-box {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
104
  text-align: center;
105
  padding: 48px 44px;
106
  border-radius: var(--radius);
107
  background: var(--bg-card);
108
  border: 2px solid var(--border);
109
  box-shadow: var(--shadow-soft), var(--shadow-glow);
 
 
 
 
 
110
  position: relative;
111
- z-index: 1;
112
- width: 100%;
113
- max-width: 420px;
114
  animation: bounceIn 0.6s var(--transition);
115
  }
116
 
 
 
 
 
 
 
 
 
 
117
  @keyframes bounceIn {
118
  0% {
119
  opacity: 0;
@@ -155,6 +186,124 @@
155
  line-height: 1.6;
156
  }
157
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
  .input-group {
159
  position: relative;
160
  margin-bottom: 24px;
@@ -491,34 +640,67 @@
491
  font-size: 16px;
492
  }
493
 
494
- .login-box {
 
495
  padding: 32px 24px;
496
  }
497
 
498
- .login-box h1 {
499
  font-size: 32px;
500
  }
501
 
502
  .login-subtitle {
503
  font-size: 14px;
504
  }
 
 
 
 
 
 
 
 
505
  }
506
  </style>
507
  </head>
508
 
509
  <body>
510
  <div id="loginScreen" class="login-screen">
511
- <div class="login-box">
512
- <h1>Paper</h1>
513
- <p class="login-subtitle">Perfect for temporary notes and secure sharing. Deleted after two days.</p>
514
-
515
- <div class="input-group">
516
- <input type="password" id="passwordInput" class="password-input" placeholder="min-8-char password"
517
- minlength="8" maxlength="100">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
518
  </div>
519
-
520
- <button onclick="login()" class="enter-btn">Enter</button>
521
- <div id="loginError" class="error"></div>
522
  </div>
523
  </div>
524
 
@@ -546,6 +728,12 @@
546
 
547
  const PBKDF2_ITERATIONS = 250000;
548
 
 
 
 
 
 
 
549
  // --- WORD COUNT ---
550
  function updateWordCount() {
551
  const text = document.getElementById('editor').value;
 
100
  z-index: 2;
101
  }
102
 
103
+ /* Flip Card Container */
104
+ .card-container {
105
+ width: 100%;
106
+ max-width: 420px;
107
+ perspective: 1000px;
108
+ }
109
+
110
+ .card-inner {
111
+ position: relative;
112
+ width: 100%;
113
+ transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);
114
+ transform-style: preserve-3d;
115
+ }
116
+
117
+ .card-container.flipped .card-inner {
118
+ transform: rotateY(180deg);
119
+ }
120
+
121
+ .card-front,
122
+ .card-back {
123
  text-align: center;
124
  padding: 48px 44px;
125
  border-radius: var(--radius);
126
  background: var(--bg-card);
127
  border: 2px solid var(--border);
128
  box-shadow: var(--shadow-soft), var(--shadow-glow);
129
+ backface-visibility: hidden;
130
+ -webkit-backface-visibility: hidden;
131
+ }
132
+
133
+ .card-front {
134
  position: relative;
135
+ z-index: 2;
 
 
136
  animation: bounceIn 0.6s var(--transition);
137
  }
138
 
139
+ .card-back {
140
+ position: absolute;
141
+ top: 0;
142
+ left: 0;
143
+ right: 0;
144
+ transform: rotateY(180deg);
145
+ z-index: 1;
146
+ }
147
+
148
  @keyframes bounceIn {
149
  0% {
150
  opacity: 0;
 
186
  line-height: 1.6;
187
  }
188
 
189
+ /* Info Icon & Card Back */
190
+ .info-icon {
191
+ position: absolute;
192
+ top: 16px;
193
+ right: 16px;
194
+ width: 28px;
195
+ height: 28px;
196
+ border-radius: 50%;
197
+ background: var(--bg-tertiary);
198
+ border: 1px solid var(--border);
199
+ color: var(--text-muted);
200
+ font-size: 14px;
201
+ font-weight: 600;
202
+ cursor: pointer;
203
+ display: flex;
204
+ align-items: center;
205
+ justify-content: center;
206
+ transition: var(--transition);
207
+ font-family: serif;
208
+ z-index: 5;
209
+ }
210
+
211
+ .info-icon:hover {
212
+ background: var(--accent-purple);
213
+ color: white;
214
+ border-color: var(--accent-purple);
215
+ transform: scale(1.1);
216
+ }
217
+
218
+ .back-icon {
219
+ position: absolute;
220
+ top: 16px;
221
+ right: 16px;
222
+ width: 28px;
223
+ height: 28px;
224
+ border-radius: 50%;
225
+ background: var(--bg-tertiary);
226
+ border: 1px solid var(--border);
227
+ color: var(--text-muted);
228
+ font-size: 16px;
229
+ cursor: pointer;
230
+ display: flex;
231
+ align-items: center;
232
+ justify-content: center;
233
+ transition: var(--transition);
234
+ }
235
+
236
+ .back-icon:hover {
237
+ background: var(--accent-pink);
238
+ color: white;
239
+ border-color: var(--accent-pink);
240
+ transform: scale(1.1);
241
+ }
242
+
243
+ .info-title {
244
+ font-size: 22px;
245
+ font-weight: 700;
246
+ color: var(--text-primary);
247
+ margin-bottom: 20px;
248
+ background: var(--gradient-primary);
249
+ -webkit-background-clip: text;
250
+ -webkit-text-fill-color: transparent;
251
+ background-clip: text;
252
+ }
253
+
254
+ .info-list {
255
+ list-style: none;
256
+ padding: 0;
257
+ margin: 0 0 24px 0;
258
+ text-align: left;
259
+ }
260
+
261
+ .info-list li {
262
+ color: var(--text-secondary);
263
+ font-size: 13px;
264
+ line-height: 1.7;
265
+ padding: 10px 0;
266
+ padding-left: 24px;
267
+ position: relative;
268
+ border-bottom: 1px solid var(--border);
269
+ }
270
+
271
+ .info-list li:last-child {
272
+ border-bottom: none;
273
+ }
274
+
275
+ .info-list li::before {
276
+ content: '✦';
277
+ position: absolute;
278
+ left: 0;
279
+ color: var(--accent-purple);
280
+ }
281
+
282
+ .info-list li strong {
283
+ color: var(--text-primary);
284
+ }
285
+
286
+ .info-link {
287
+ display: inline-flex;
288
+ align-items: center;
289
+ gap: 6px;
290
+ color: var(--accent-blue);
291
+ text-decoration: none;
292
+ font-weight: 600;
293
+ font-size: 13px;
294
+ transition: var(--transition);
295
+ padding: 10px 16px;
296
+ background: var(--bg-tertiary);
297
+ border-radius: 50px;
298
+ border: 1px solid var(--border);
299
+ }
300
+
301
+ .info-link:hover {
302
+ color: white;
303
+ background: var(--accent-blue);
304
+ border-color: var(--accent-blue);
305
+ }
306
+
307
  .input-group {
308
  position: relative;
309
  margin-bottom: 24px;
 
640
  font-size: 16px;
641
  }
642
 
643
+ .card-front,
644
+ .card-back {
645
  padding: 32px 24px;
646
  }
647
 
648
+ .card-front h1 {
649
  font-size: 32px;
650
  }
651
 
652
  .login-subtitle {
653
  font-size: 14px;
654
  }
655
+
656
+ .info-list li {
657
+ font-size: 12px;
658
+ }
659
+
660
+ .info-title {
661
+ font-size: 18px;
662
+ }
663
  }
664
  </style>
665
  </head>
666
 
667
  <body>
668
  <div id="loginScreen" class="login-screen">
669
+ <div id="cardContainer" class="card-container">
670
+ <div class="card-inner">
671
+ <!-- Front: Login -->
672
+ <div class="card-front">
673
+ <div class="info-icon" onclick="flipCard()" title="Learn more">i</div>
674
+ <h1>Paper</h1>
675
+ <p class="login-subtitle">Perfect for temporary notes and secure sharing. Deleted after two days.
676
+ </p>
677
+
678
+ <div class="input-group">
679
+ <input type="password" id="passwordInput" class="password-input"
680
+ placeholder="min-8-char password" minlength="8" maxlength="100">
681
+ </div>
682
+
683
+ <button onclick="login()" class="enter-btn">Enter</button>
684
+ <div id="loginError" class="error"></div>
685
+ </div>
686
+
687
+ <!-- Back: Info -->
688
+ <div class="card-back">
689
+ <div class="back-icon" onclick="flipCard()" title="Back to login">←</div>
690
+ <h3 class="info-title">About Paper ✨</h3>
691
+ <ul class="info-list">
692
+ <li><strong>What is it?</strong> A simple, secure notepad for temporary notes that you can
693
+ access from anywhere.</li>
694
+ <li><strong>Encryption:</strong> Your notes are encrypted using your password. We never store
695
+ your password.</li>
696
+ <li><strong>Retention:</strong> Notes are automatically deleted after 2 days of inactivity.</li>
697
+ <li><strong>Privacy:</strong> No tracking, no analytics, no cookies. Just notes.</li>
698
+ </ul>
699
+ <a href="https://github.com/jebin2/Paper" target="_blank" class="info-link">
700
+ πŸ”— View source on GitHub
701
+ </a>
702
+ </div>
703
  </div>
 
 
 
704
  </div>
705
  </div>
706
 
 
728
 
729
  const PBKDF2_ITERATIONS = 250000;
730
 
731
+ // --- CARD FLIP ---
732
+ function flipCard() {
733
+ const container = document.getElementById('cardContainer');
734
+ container.classList.toggle('flipped');
735
+ }
736
+
737
  // --- WORD COUNT ---
738
  function updateWordCount() {
739
  const text = document.getElementById('editor').value;