Spaces:
Paused
Paused
Upload index.html
Browse files- index.html +22 -228
index.html
CHANGED
|
@@ -8,234 +8,28 @@
|
|
| 8 |
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+Thai:wght@300;400;500;600;700&family=Noto+Serif+Thai:wght@500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
|
| 9 |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
| 10 |
<style>
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
:
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
--fm:'JetBrains Mono',monospace;
|
| 34 |
-
/* Motion */
|
| 35 |
-
--ease-out:cubic-bezier(0.16,1,0.3,1);--ease-spring:cubic-bezier(0.34,1.56,0.64,1);
|
| 36 |
-
--dur-fast:0.2s;--dur-normal:0.35s;--dur-slow:0.6s;
|
| 37 |
-
}
|
| 38 |
-
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
|
| 39 |
-
html{font-size:16px;overflow:hidden}body{font-family:var(--fb);background:var(--bg);color:var(--text);overflow:hidden;height:100vh;display:flex;flex-direction:column;accent-color:var(--neon)}
|
| 40 |
-
::-webkit-scrollbar{width:3px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--muted);border-radius:4px}
|
| 41 |
-
|
| 42 |
-
/* ── Animation Keyframes ── */
|
| 43 |
-
@keyframes fadeSlideUp{from{opacity:0;transform:translateY(20px) scale(0.98)}to{opacity:1;transform:translateY(0) scale(1)}}
|
| 44 |
-
@keyframes fadeScale{from{opacity:0;transform:scale(0.92)}to{opacity:1;transform:scale(1)}}
|
| 45 |
-
@keyframes slideInRight{from{opacity:0;transform:translateX(30px)}to{opacity:1;transform:translateX(0)}}
|
| 46 |
-
@keyframes slideInLeft{from{opacity:0;transform:translateX(-30px)}to{opacity:1;transform:translateX(0)}}
|
| 47 |
-
@keyframes pulseGlow{0%,100%{box-shadow:0 0 0 0 rgba(0,255,136,0.3)}50%{box-shadow:0 0 20px 6px rgba(0,255,136,0)}}
|
| 48 |
-
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
|
| 49 |
-
@keyframes spinSlow{from{transform:rotate(0)}to{transform:rotate(360deg)}}
|
| 50 |
-
@keyframes shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}
|
| 51 |
-
@keyframes toastIn{from{transform:translateY(60px);opacity:0}to{transform:translateY(0);opacity:1}}
|
| 52 |
-
@keyframes rippleAnim{to{transform:scale(3);opacity:0}}
|
| 53 |
-
@keyframes barBounce{0%,100%{height:3px}50%{height:16px}}
|
| 54 |
-
@keyframes livePulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(1.3)}}
|
| 55 |
-
|
| 56 |
-
/* ── Prototype Chrome ── */
|
| 57 |
-
.proto-bar{background:var(--glass);backdrop-filter:blur(20px) saturate(1.3);border-bottom:1px solid var(--glass-border);padding:.45rem 1rem;display:flex;align-items:center;gap:1rem;z-index:9999;flex-shrink:0}
|
| 58 |
-
.proto-title{font-family:var(--fm);font-size:.65rem;color:var(--neon);letter-spacing:2px;text-transform:uppercase}
|
| 59 |
-
.proto-screens{display:flex;gap:.3rem;flex-wrap:wrap}
|
| 60 |
-
.proto-btn{background:var(--bg);border:1px solid var(--border);color:var(--muted);padding:.25rem .65rem;border-radius:20px;font-size:.62rem;cursor:pointer;font-family:var(--fb);transition:all var(--dur-fast) var(--ease-out);white-space:nowrap}
|
| 61 |
-
.proto-btn:hover{color:var(--neon);border-color:var(--neon-dim)}
|
| 62 |
-
.proto-btn.active{background:rgba(0,255,136,0.1);color:var(--neon);border-color:rgba(0,255,136,0.25);box-shadow:0 0 8px rgba(0,255,136,.1)}
|
| 63 |
-
.proto-device{margin-left:auto;display:flex;align-items:center;gap:.3rem}
|
| 64 |
-
.device-btn{background:none;border:1px solid var(--border);color:var(--muted);padding:.2rem .5rem;border-radius:6px;cursor:pointer;font-size:.65rem;transition:all var(--dur-fast)}
|
| 65 |
-
.device-btn:hover,.device-btn.active{color:var(--neon);border-color:var(--neon)}
|
| 66 |
-
.proto-badge{font-family:var(--fm);font-size:.55rem;color:var(--muted);padding:.1rem .4rem;background:var(--bg);border-radius:6px;border:1px solid var(--border)}
|
| 67 |
-
.role-badge{font-size:.55rem;padding:.12rem .5rem;border-radius:12px;font-weight:600;margin-left:auto}
|
| 68 |
-
.role-pastor{background:rgba(0,255,136,.15);color:var(--neon);border:1px solid rgba(0,255,136,.25)}
|
| 69 |
-
.role-leader{background:rgba(0,224,255,.15);color:var(--cyan);border:1px solid rgba(0,224,255,.25)}
|
| 70 |
-
.role-member{background:rgba(255,179,64,.15);color:var(--amber);border:1px solid rgba(255,179,64,.25)}
|
| 71 |
-
.role-visitor{background:var(--surface);color:var(--muted);border:1px solid var(--border)}
|
| 72 |
-
|
| 73 |
-
/* ── Viewport & Device ── */
|
| 74 |
-
.viewport{flex:1;display:flex;align-items:center;justify-content:center;overflow:hidden;background:radial-gradient(ellipse at 30% 20%,rgba(0,255,136,.02) 0%,transparent 50%),radial-gradient(ellipse at 70% 80%,rgba(0,224,255,.015) 0%,transparent 50%),var(--bg);position:relative}
|
| 75 |
-
.device{position:relative;transition:all var(--dur-slow) var(--ease-out);display:flex;flex-direction:column}
|
| 76 |
-
.device.mobile{width:390px;height:844px;border-radius:48px;border:10px solid #07080a;box-shadow:0 0 0 1px rgba(42,46,55,.8),0 48px 96px rgba(0,0,0,.7),inset 0 0 0 1px rgba(26,29,35,.8),0 0 60px rgba(0,255,136,.05)}
|
| 77 |
-
.device.tablet{width:768px;height:720px;border-radius:28px;border:8px solid #07080a;box-shadow:0 0 0 1px rgba(42,46,55,.8),0 48px 96px rgba(0,0,0,.7)}
|
| 78 |
-
.device.desktop{width:1100px;height:720px;border-radius:16px;border:6px solid #07080a;box-shadow:0 0 0 1px rgba(42,46,55,.8),0 48px 96px rgba(0,0,0,.7)}
|
| 79 |
-
.device.mobile::before{content:'';position:absolute;top:0;left:50%;transform:translateX(-50%);width:130px;height:32px;background:#07080a;border-radius:0 0 22px 22px;z-index:100}
|
| 80 |
-
.screen{flex:1;background:var(--bg-elev);overflow-y:auto;overflow-x:hidden;position:relative;scrollbar-width:thin;scrollbar-color:var(--muted) transparent}
|
| 81 |
-
.device.mobile .screen{border-radius:38px;padding-top:42px}
|
| 82 |
-
.device.tablet .screen{border-radius:20px}
|
| 83 |
-
.device.desktop .screen{border-radius:10px}
|
| 84 |
-
|
| 85 |
-
/* ── Screens ── */
|
| 86 |
-
.s{display:none;flex-direction:column;min-height:100%}
|
| 87 |
-
.s.show{display:flex;animation:fadeSlideUp .45s var(--ease-out)}
|
| 88 |
-
.s.show.splash-anim{animation:fadeScale .6s var(--ease-out)}
|
| 89 |
-
|
| 90 |
-
/* ── Glass Cards ── */
|
| 91 |
-
.glass{background:var(--glass);backdrop-filter:blur(16px) saturate(1.2);border:1px solid var(--glass-border);border-radius:18px;box-shadow:var(--shadow-sm);transition:all var(--dur-fast) var(--ease-out);position:relative;overflow:hidden}
|
| 92 |
-
.glass:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}
|
| 93 |
-
.glass::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.08),transparent)}
|
| 94 |
-
|
| 95 |
-
/* ── Buttons ── */
|
| 96 |
-
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.75rem 1.5rem;border-radius:50px;font-family:var(--fb);font-weight:600;font-size:.85rem;cursor:pointer;transition:all var(--dur-fast) var(--ease-out);border:none;text-decoration:none;position:relative;overflow:hidden}
|
| 97 |
-
.btn::after{content:'';position:absolute;inset:0;border-radius:50px;opacity:0;transition:opacity var(--dur-fast);background:radial-gradient(circle at var(--x,50%) var(--y,50%),rgba(255,255,255,.12) 0%,transparent 60%)}
|
| 98 |
-
.btn:hover::after{opacity:1}
|
| 99 |
-
.btn:active{transform:scale(0.96)}
|
| 100 |
-
.btn-primary{background:linear-gradient(135deg,var(--neon) 0%,#00D470 100%);color:#08090C;box-shadow:0 4px 16px rgba(0,255,136,.25),inset 0 1px 0 rgba(255,255,255,.2)}
|
| 101 |
-
.btn-primary:hover{box-shadow:0 6px 24px rgba(0,255,136,.35)}
|
| 102 |
-
.btn-glass{background:var(--glass);backdrop-filter:blur(10px);color:var(--text);border:1px solid var(--glass-border);box-shadow:var(--shadow-sm)}
|
| 103 |
-
.btn-glass:hover{border-color:rgba(0,255,136,.2);color:var(--neon)}
|
| 104 |
-
.btn-icon{width:38px;height:38px;padding:0;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.85rem}
|
| 105 |
-
|
| 106 |
-
/* ── Ripple ── */
|
| 107 |
-
.ripple{position:relative;overflow:hidden}
|
| 108 |
-
.ripple-circle{position:absolute;border-radius:50%;background:rgba(255,255,255,.2);transform:scale(0);animation:rippleAnim .5s linear;pointer-events:none}
|
| 109 |
-
|
| 110 |
-
/* ── Bottom Nav ── */
|
| 111 |
-
.bot-nav{position:fixed;bottom:0;left:0;right:0;background:var(--glass);backdrop-filter:blur(20px) saturate(1.3);border-top:1px solid var(--glass-border);display:flex;z-index:500;padding-bottom:env(safe-area-inset-bottom,0);box-shadow:0 -6px 24px rgba(0,0,0,.25)}
|
| 112 |
-
.device .bot-nav{position:sticky;bottom:0;margin-top:auto}
|
| 113 |
-
.nav-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:.55rem .15rem;cursor:pointer;gap:.15rem;border:none;background:none;color:var(--muted);position:relative;transition:all var(--dur-fast)}
|
| 114 |
-
.nav-item i{font-size:1.05rem;transition:all var(--dur-fast)}
|
| 115 |
-
.nav-item span{font-size:.55rem;letter-spacing:.2px;font-weight:500}
|
| 116 |
-
.nav-item.active{color:var(--neon)}
|
| 117 |
-
.nav-item.active i{filter:drop-shadow(0 0 6px rgba(0,255,136,.4));transform:translateY(-2px)}
|
| 118 |
-
.nav-item.active span{font-weight:600}
|
| 119 |
-
.nav-item::after{content:'';position:absolute;bottom:0;width:0;height:2px;border-radius:2px;background:var(--neon);transition:width var(--dur-normal) var(--ease-spring);box-shadow:0 0 6px var(--neon-glow)}
|
| 120 |
-
.nav-item.active::after{width:20px}
|
| 121 |
-
.nav-badge{position:absolute;top:0;right:calc(50% - 12px);width:6px;height:6px;border-radius:50%;background:var(--red);border:2px solid var(--bg-elev);animation:pulseGlow 2s infinite}
|
| 122 |
-
|
| 123 |
-
/* ── Section Title ── */
|
| 124 |
-
.sec-title{padding:.5rem 1rem .3rem;font-size:.62rem;color:var(--muted);letter-spacing:2px;text-transform:uppercase;font-family:var(--fm);font-weight:500;animation:fadeSlideUp .3s var(--ease-out) both}
|
| 125 |
-
|
| 126 |
-
/* ── Status Chips ── */
|
| 127 |
-
.chip{display:inline-flex;align-items:center;gap:.3rem;padding:.18rem .55rem;border-radius:10px;font-size:.58rem;font-weight:600}
|
| 128 |
-
.chip-visitor{background:var(--amber-dim);color:var(--amber);border:1px solid rgba(255,179,64,.15)}
|
| 129 |
-
.chip-believer{background:rgba(0,255,136,.1);color:var(--neon);border:1px solid rgba(0,255,136,.15)}
|
| 130 |
-
.chip-leader{background:var(--cyan-dim);color:var(--cyan);border:1px solid rgba(0,224,255,.15)}
|
| 131 |
-
.chip-inactive{background:rgba(122,129,148,.1);color:var(--muted);border:1px solid rgba(122,129,148,.15)}
|
| 132 |
-
.chip-urgent{background:var(--red-dim);color:var(--red);border:1px solid rgba(255,82,82,.15)}
|
| 133 |
-
|
| 134 |
-
/* ── AI Suggestion Card ── */
|
| 135 |
-
.ai-card{margin:0 1rem .75rem;border-radius:16px;padding:1rem;position:relative;overflow:hidden;background:linear-gradient(135deg,rgba(0,255,136,.05) 0%,rgba(0,224,255,.03) 100%);border:1px solid rgba(0,255,136,.1);animation:fadeSlideUp .45s var(--ease-out) both}
|
| 136 |
-
.ai-card::before{content:'';position:absolute;top:0;left:0;width:2px;height:100%;background:var(--neon);border-radius:2px;box-shadow:0 0 10px var(--neon-glow)}
|
| 137 |
-
.ai-icon{width:28px;height:28px;border-radius:8px;background:rgba(0,255,136,.08);display:flex;align-items:center;justify-content:center;color:var(--neon);font-size:.8rem;margin-right:.6rem;flex-shrink:0}
|
| 138 |
-
.ai-title{font-size:.82rem;font-weight:600;margin-bottom:.15rem}
|
| 139 |
-
.ai-text{font-size:.68rem;color:var(--text-sec);line-height:1.5}
|
| 140 |
-
.ai-action{margin-top:.6rem;font-size:.65rem;color:var(--neon);font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:.3rem}
|
| 141 |
-
.ai-action:hover{text-decoration:underline}
|
| 142 |
-
|
| 143 |
-
/* ── Member Card ── */
|
| 144 |
-
.mem-card{display:flex;align-items:center;gap:.75rem;padding:.9rem 1rem;margin:0 1rem .5rem;border-radius:16px;background:var(--glass);backdrop-filter:blur(10px);border:1px solid var(--glass-border);cursor:pointer;transition:all var(--dur-fast);box-shadow:var(--shadow-sm);animation:fadeSlideUp .4s var(--ease-out) both}
|
| 145 |
-
.mem-card:hover{transform:translateX(3px);border-color:rgba(255,255,255,.08);box-shadow:var(--shadow-md)}
|
| 146 |
-
.mem-avatar{width:42px;height:42px;border-radius:50%;background:var(--bg);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:.9rem;flex-shrink:0;position:relative}
|
| 147 |
-
.mem-avatar .status-dot{position:absolute;bottom:1px;right:1px;width:10px;height:10px;border-radius:50%;border:2px solid var(--bg-elev)}
|
| 148 |
-
.mem-avatar .status-dot.online{background:var(--neon)}
|
| 149 |
-
.mem-avatar .status-dot.away{background:var(--amber)}
|
| 150 |
-
.mem-avatar .status-dot.offline{background:var(--muted)}
|
| 151 |
-
.mem-info{flex:1;min-width:0}
|
| 152 |
-
.mem-name{font-size:.82rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
| 153 |
-
.mem-meta{font-size:.6rem;color:var(--text-sec);margin-top:.1rem;display:flex;align-items:center;gap:.4rem}
|
| 154 |
-
.mem-stage{font-size:.55rem;padding:.1rem .4rem;border-radius:6px;background:rgba(0,224,255,.1);color:var(--cyan);font-weight:500}
|
| 155 |
-
|
| 156 |
-
/* ── Journey Timeline ── */
|
| 157 |
-
.journey-line{position:relative;padding-left:1.5rem;margin:0 1rem}
|
| 158 |
-
.journey-line::before{content:'';position:absolute;left:.45rem;top:0;bottom:0;width:2px;background:linear-gradient(to bottom,var(--neon),var(--cyan),transparent);border-radius:1px}
|
| 159 |
-
.j-node{position:relative;margin-bottom:1rem;animation:slideInRight .4s var(--ease-out) both}
|
| 160 |
-
.j-dot{position:absolute;left:-1.12rem;top:.3rem;width:10px;height:10px;border-radius:50%;background:var(--neon);border:2px solid var(--bg-elev);box-shadow:0 0 8px var(--neon-glow)}
|
| 161 |
-
.j-dot.done{background:var(--neon)}
|
| 162 |
-
.j-dot.current{background:var(--cyan);animation:pulseGlow 2s infinite}
|
| 163 |
-
.j-dot.pending{background:var(--border)}
|
| 164 |
-
.j-card{padding:.75rem 1rem;border-radius:14px;background:var(--glass);border:1px solid var(--glass-border);margin-left:.3rem}
|
| 165 |
-
.j-title{font-size:.78rem;font-weight:600;margin-bottom:.1rem}
|
| 166 |
-
.j-date{font-size:.58rem;color:var(--muted);font-family:var(--fm)}
|
| 167 |
-
|
| 168 |
-
/* ── Attendance Tracker ── */
|
| 169 |
-
.att-track{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;margin:0 1rem .5rem;border-radius:16px;background:var(--glass);border:1px solid var(--glass-border)}
|
| 170 |
-
.att-circle{width:44px;height:44px;border-radius:50%;background:var(--bg);border:2px solid var(--border);display:flex;align-items:center;justify-content:center;flex-direction:column;position:relative}
|
| 171 |
-
.att-circle.present{border-color:var(--neon);background:rgba(0,255,136,.08)}
|
| 172 |
-
.att-circle.absent{border-color:var(--red);background:var(--red-dim)}
|
| 173 |
-
.att-circle.excused{border-color:var(--amber);background:var(--amber-dim)}
|
| 174 |
-
.att-day{font-size:.55rem;color:var(--muted);font-family:var(--fm)}
|
| 175 |
-
.att-check{font-size:1rem;color:var(--neon)}
|
| 176 |
-
.att-info{flex:1}
|
| 177 |
-
.att-name{font-size:.82rem;font-weight:600}
|
| 178 |
-
.att-rate{font-size:.6rem;color:var(--text-sec)}
|
| 179 |
-
.att-bar{height:4px;background:var(--bg);border-radius:2px;margin-top:.3rem;overflow:hidden;border:1px solid var(--border)}
|
| 180 |
-
.att-fill{height:100%;background:linear-gradient(90deg,var(--neon),var(--cyan));border-radius:2px;transition:width .5s var(--ease-out)}
|
| 181 |
-
|
| 182 |
-
/* ── Stats Grid ── */
|
| 183 |
-
.stats-row{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;padding:0 1rem .75rem}
|
| 184 |
-
.stat-card{padding:.9rem;border-radius:16px;background:var(--glass);border:1px solid var(--glass-border);position:relative;overflow:hidden;animation:fadeSlideUp .4s var(--ease-out) both}
|
| 185 |
-
.stat-card::before{content:'';position:absolute;top:0;left:0;width:2px;height:100%}
|
| 186 |
-
.stat-card.s-neon::before{background:var(--neon);box-shadow:0 0 8px var(--neon-glow)}
|
| 187 |
-
.stat-card.s-cyan::before{background:var(--cyan);box-shadow:0 0 8px var(--cyan-glow)}
|
| 188 |
-
.stat-card.s-amber::before{background:var(--amber)}
|
| 189 |
-
.stat-card.s-pink::before{background:var(--pink)}
|
| 190 |
-
.stat-num{font-family:var(--fm);font-size:1.6rem;font-weight:700;line-height:1}
|
| 191 |
-
.stat-card.s-neon .stat-num{color:var(--neon)}
|
| 192 |
-
.stat-card.s-cyan .stat-num{color:var(--cyan)}
|
| 193 |
-
.stat-card.s-amber .stat-num{color:var(--amber)}
|
| 194 |
-
.stat-card.s-pink .stat-num{color:var(--pink)}
|
| 195 |
-
.stat-label{font-size:.6rem;color:var(--muted);margin-top:.2rem;text-transform:uppercase;letter-spacing:.5px}
|
| 196 |
-
|
| 197 |
-
/* ── Toast ── */
|
| 198 |
-
.toast-container{position:fixed;bottom:80px;left:50%;transform:translateX(-50%);z-index:9999;display:flex;flex-direction:column;gap:.4rem;pointer-events:none}
|
| 199 |
-
.toast{background:var(--glass);backdrop-filter:blur(16px);border:1px solid var(--glass-border);border-radius:14px;padding:.7rem 1rem;color:var(--text);font-size:.78rem;display:flex;align-items:center;gap:.5rem;box-shadow:var(--shadow-md);animation:toastIn .35s var(--ease-out);pointer-events:auto}
|
| 200 |
-
.toast i{color:var(--neon);font-size:.85rem}
|
| 201 |
-
|
| 202 |
-
/* ── Skeleton ── */
|
| 203 |
-
.skeleton{background:linear-gradient(90deg,var(--bg-elev) 25%,rgba(255,255,255,.03) 50%,var(--bg-elev) 75%);background-size:200% 100%;animation:shimmer 1.6s infinite;border-radius:6px}
|
| 204 |
-
|
| 205 |
-
/* ── Modal ── */
|
| 206 |
-
.modal-overlay{position:absolute;inset:0;background:rgba(0,0,0,.55);backdrop-filter:blur(8px);z-index:900;display:none;align-items:flex-end;justify-content:center}
|
| 207 |
-
.modal-overlay.open{display:flex;animation:fadeSlideUp .3s var(--ease-out)}
|
| 208 |
-
.modal-sheet{background:var(--glass);backdrop-filter:blur(24px) saturate(1.3);border:1px solid var(--glass-border);border-radius:28px 28px 0 0;width:100%;max-width:500px;max-height:85vh;overflow-y:auto;padding:1.4rem;box-shadow:0 -12px 40px rgba(0,0,0,.4)}
|
| 209 |
-
.modal-handle{width:40px;height:3px;background:var(--border);border-radius:2px;margin:0 auto 1.1rem}
|
| 210 |
-
|
| 211 |
-
/* ── Form Fields ── */
|
| 212 |
-
.fld-label{font-size:.62rem;color:var(--muted);margin-bottom:.3rem;display:block;padding-left:.25rem;font-weight:500;letter-spacing:.5px}
|
| 213 |
-
.fld-input{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:.75rem .9rem;color:var(--text);font-family:var(--fb);font-size:.82rem;transition:all var(--dur-fast);outline:none;margin-bottom:.6rem}
|
| 214 |
-
.fld-input:focus{border-color:rgba(0,255,136,.2);box-shadow:0 0 0 3px var(--neon-dim),0 0 12px rgba(0,255,136,.08)}
|
| 215 |
-
.fld-input::placeholder{color:var(--muted)}
|
| 216 |
-
|
| 217 |
-
/* ── Login Overlay (Role Selector) ── */
|
| 218 |
-
.login-overlay{position:absolute;inset:0;background:var(--bg-elev);z-index:800;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;text-align:center}
|
| 219 |
-
.login-overlay.hidden{display:none}
|
| 220 |
-
.role-grid{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;width:100%;max-width:280px;margin-top:1.2rem}
|
| 221 |
-
.role-btn{padding:1rem;border-radius:16px;background:var(--glass);border:1px solid var(--glass-border);cursor:pointer;transition:all var(--dur-fast);display:flex;flex-direction:column;align-items:center;gap:.4rem}
|
| 222 |
-
.role-btn:hover{border-color:rgba(0,255,136,.15);transform:translateY(-2px)}
|
| 223 |
-
.role-btn.active{border-color:var(--neon);background:rgba(0,255,136,.08);box-shadow:0 0 16px rgba(0,255,136,.1)}
|
| 224 |
-
.role-btn i{font-size:1.3rem;color:var(--muted);transition:color var(--dur-fast)}
|
| 225 |
-
.role-btn.active i{color:var(--neon)}
|
| 226 |
-
.role-btn span{font-size:.65rem;color:var(--text-sec);font-weight:500}
|
| 227 |
-
.role-btn.active span{color:var(--text)}
|
| 228 |
-
|
| 229 |
-
/* ── Page Transitions ── */
|
| 230 |
-
.page-enter{animation:fadeSlideUp .4s var(--ease-out)}
|
| 231 |
-
.page-enter-right{animation:slideInRight .4s var(--ease-out)}
|
| 232 |
-
.page-enter-left{animation:slideInLeft .4s var(--ease-out)}
|
| 233 |
-
|
| 234 |
-
/* ── Responsive font sizing for desktop ── */
|
| 235 |
-
.device.desktop .screen{font-size:1.05rem}
|
| 236 |
-
.device.desktop .nav-item span{font-size:.65rem}
|
| 237 |
-
.device.desktop .sec-title{font-size:.68rem}
|
| 238 |
-
.device.desktop .btn{font-size:.9rem;padding:.85rem 1.8rem}
|
| 239 |
</style>
|
| 240 |
</head>
|
| 241 |
<body>
|
|
|
|
| 8 |
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+Thai:wght@300;400;500;600;700&family=Noto+Serif+Thai:wght@500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
|
| 9 |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
| 10 |
<style>
|
| 11 |
+
:root{--bg:#0a0d10;--bg-elev:#11151a;--surface:rgba(24,28,35,0.8);--glass:rgba(24,28,35,0.6);--glass-border:rgba(255,255,255,0.06);--neon:#00FF88;--neon-dim:rgba(0,255,136,0.12);--neon-glow:rgba(0,255,136,0.3);--cyan:#00E0FF;--cyan-dim:rgba(0,224,255,0.12);--amber:#FFB340;--amber-dim:rgba(255,179,64,0.12);--pink:#FF7AAE;--pink-dim:rgba(255,122,174,0.12);--red:#FF5252;--red-dim:rgba(255,82,82,0.12);--purple:#B388FF;--text:#F0F2F5;--text-sec:rgba(240,242,245,0.65);--muted:#7A8194;--border:rgba(255,255,255,0.06);--shadow-sm:0 2px 8px rgba(0,0,0,0.3);--shadow-md:0 8px 32px rgba(0,0,0,0.4);--shadow-glow:0 0 40px rgba(0,255,136,0.15);--fh:'Noto Serif Thai',Georgia,serif;--fb:'Noto Sans Thai',system-ui,sans-serif;--fm:'JetBrains Mono',monospace;--ease-out:cubic-bezier(0.16,1,0.3,1);--ease-spring:cubic-bezier(0.34,1.56,0.64,1);--dur-fast:0.2s;--dur-normal:0.35s;--dur-slow:0.6s}
|
| 12 |
+
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{font-size:16px;overflow:hidden}body{font-family:var(--fb);background:var(--bg);color:var(--text);overflow:hidden;height:100vh;display:flex;flex-direction:column;accent-color:var(--neon)}::-webkit-scrollbar{width:3px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--muted);border-radius:4px}
|
| 13 |
+
@keyframes f{from{opacity:0;transform:translateY(20px) scale(0.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes fs{from{opacity:0;transform:scale(0.92)}to{opacity:1;transform:scale(1)}}@keyframes sr{from{opacity:0;transform:translateX(30px)}to{opacity:1;transform:translateX(0)}}@keyframes sl{from{opacity:0;transform:translateX(-30px)}to{opacity:1;transform:translateX(0)}}@keyframes pg{0%,100%{box-shadow:0 0 0 0 rgba(0,255,136,0.3)}50%{box-shadow:0 0 20px 6px rgba(0,255,136,0)}}@keyframes fl{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes sp{from{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes sh{0%{background-position:-200% 0}100%{background-position:200% 0}}@keyframes ti{from{transform:translateY(60px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes rp{to{transform:scale(3);opacity:0}}@keyframes bb{0%,100%{height:3px}50%{height:16px}}@keyframes lp{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(1.3)}}
|
| 14 |
+
.p{background:var(--glass);backdrop-filter:blur(20px) saturate(1.3);border-bottom:1px solid var(--glass-border);padding:.45rem 1rem;display:flex;align-items:center;gap:1rem;z-index:9999;flex-shrink:0}.pt{font-family:var(--fm);font-size:.65rem;color:var(--neon);letter-spacing:2px;text-transform:uppercase}.ps{display:flex;gap:.3rem;flex-wrap:wrap}.pb{background:var(--bg);border:1px solid var(--border);color:var(--muted);padding:.25rem .65rem;border-radius:20px;font-size:.62rem;cursor:pointer;font-family:var(--fb);transition:all var(--dur-fast) var(--ease-out);white-space:nowrap}.pb:hover{color:var(--neon);border-color:var(--neon-dim)}.pb.ac{background:rgba(0,255,136,0.1);color:var(--neon);border-color:rgba(0,255,136,0.25);box-shadow:0 0 8px rgba(0,255,136,.1)}.pd{margin-left:auto;display:flex;align-items:center;gap:.3rem}.db{background:none;border:1px solid var(--border);color:var(--muted);padding:.2rem .5rem;border-radius:6px;cursor:pointer;font-size:.65rem;transition:all var(--dur-fast)}.db:hover,.db.ac{color:var(--neon);border-color:var(--neon)}.bd{font-family:var(--fm);font-size:.55rem;color:var(--muted);padding:.1rem .4rem;background:var(--bg);border-radius:6px;border:1px solid var(--border)}.rb{font-size:.55rem;padding:.12rem .5rem;border-radius:12px;font-weight:600;margin-left:auto}.rpst{background:rgba(0,255,136,.15);color:var(--neon);border:1px solid rgba(0,255,136,.25)}.rldr{background:rgba(0,224,255,.15);color:var(--cyan);border:1px solid rgba(0,224,255,.25)}.rmb{background:rgba(255,179,64,.15);color:var(--amber);border:1px solid rgba(255,179,64,.25)}.rv{background:var(--surface);color:var(--muted);border:1px solid var(--border)}
|
| 15 |
+
.v{flex:1;display:flex;align-items:center;justify-content:center;overflow:hidden;background:radial-gradient(ellipse at 30% 20%,rgba(0,255,136,.02) 0%,transparent 50%),radial-gradient(ellipse at 70% 80%,rgba(0,224,255,.015) 0%,transparent 50%),var(--bg);position:relative}.d{position:relative;transition:all var(--dur-slow) var(--ease-out);display:flex;flex-direction:column}.d.m{width:390px;height:844px;border-radius:48px;border:10px solid #07080a;box-shadow:0 0 0 1px rgba(42,46,55,.8),0 48px 96px rgba(0,0,0,.7),inset 0 0 0 1px rgba(26,29,35,.8),0 0 60px rgba(0,255,136,.05)}.d.t{width:768px;height:720px;border-radius:28px;border:8px solid #07080a;box-shadow:0 0 0 1px rgba(42,46,55,.8),0 48px 96px rgba(0,0,0,.7)}.d.x{width:1100px;height:720px;border-radius:16px;border:6px solid #07080a;box-shadow:0 0 0 1px rgba(42,46,55,.8),0 48px 96px rgba(0,0,0,.7)}.d.m::before{content:'';position:absolute;top:0;left:50%;transform:translateX(-50%);width:130px;height:32px;background:#07080a;border-radius:0 0 22px 22px;z-index:100}.sc{flex:1;background:var(--bg-elev);overflow-y:auto;overflow-x:hidden;position:relative;scrollbar-width:thin;scrollbar-color:var(--muted) transparent}.d.m .sc{border-radius:38px;padding-top:42px}.d.t .sc{border-radius:20px}.d.x .sc{border-radius:10px}
|
| 16 |
+
.s{display:none;flex-direction:column;min-height:100%}.s.sh{display:flex;animation:f .45s var(--ease-out)}.s.sa{animation:fs .6s var(--ease-out)}
|
| 17 |
+
.g{background:var(--glass);backdrop-filter:blur(16px) saturate(1.2);border:1px solid var(--glass-border);border-radius:18px;box-shadow:var(--shadow-sm);transition:all var(--dur-fast) var(--ease-out);position:relative;overflow:hidden}.g:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.g::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.08),transparent)}
|
| 18 |
+
.b{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.75rem 1.5rem;border-radius:50px;font-family:var(--fb);font-weight:600;font-size:.85rem;cursor:pointer;transition:all var(--dur-fast) var(--ease-out);border:none;position:relative;overflow:hidden}.b::after{content:'';position:absolute;inset:0;border-radius:50px;opacity:0;transition:opacity var(--dur-fast);background:radial-gradient(circle at var(--x,50%) var(--y,50%),rgba(255,255,255,.12) 0%,transparent 60%)}.b:hover::after{opacity:1}.b:active{transform:scale(0.96)}.bp{background:linear-gradient(135deg,var(--neon) 0%,#00D470 100%);color:#08090C;box-shadow:0 4px 16px rgba(0,255,136,.25),inset 0 1px 0 rgba(255,255,255,.2)}.bp:hover{box-shadow:0 6px 24px rgba(0,255,136,.35)}.bg{background:var(--glass);backdrop-filter:blur(10px);color:var(--text);border:1px solid var(--glass-border);box-shadow:var(--shadow-sm)}.bg:hover{border-color:rgba(0,255,136,.2);color:var(--neon)}.bi{width:38px;height:38px;padding:0;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.85rem}
|
| 19 |
+
.rp{position:relative;overflow:hidden}.rpc{position:absolute;border-radius:50%;background:rgba(255,255,255,.2);transform:scale(0);animation:rp .5s linear;pointer-events:none}
|
| 20 |
+
.bn{position:fixed;bottom:0;left:0;right:0;background:var(--glass);backdrop-filter:blur(20px) saturate(1.3);border-top:1px solid var(--glass-border);display:flex;z-index:500;padding-bottom:env(safe-area-inset-bottom,0);box-shadow:0 -6px 24px rgba(0,0,0,.25)}.d .bn{position:sticky;bottom:0;margin-top:auto}.ni{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:.55rem .15rem;cursor:pointer;gap:.15rem;border:none;background:none;color:var(--muted);position:relative;transition:all var(--dur-fast)}.ni i{font-size:1.05rem;transition:all var(--dur-fast)}.ni span{font-size:.55rem;letter-spacing:.2px;font-weight:500}.ni.ac{color:var(--neon)}.ni.ac i{filter:drop-shadow(0 0 6px rgba(0,255,136,.4));transform:translateY(-2px)}.ni.ac span{font-weight:600}.ni::after{content:'';position:absolute;bottom:0;width:0;height:2px;border-radius:2px;background:var(--neon);transition:width var(--dur-normal) var(--ease-spring);box-shadow:0 0 6px var(--neon-glow)}.ni.ac::after{width:20px}.nb{position:absolute;top:0;right:calc(50% - 12px);width:6px;height:6px;border-radius:50%;background:var(--red);border:2px solid var(--bg-elev);animation:pg 2s infinite}
|
| 21 |
+
.st{padding:.5rem 1rem .3rem;font-size:.62rem;color:var(--muted);letter-spacing:2px;text-transform:uppercase;font-family:var(--fm);font-weight:500;animation:f .3s var(--ease-out) both}
|
| 22 |
+
.ch{display:inline-flex;align-items:center;gap:.3rem;padding:.18rem .55rem;border-radius:10px;font-size:.58rem;font-weight:600}.cv{background:var(--amber-dim);color:var(--amber);border:1px solid rgba(255,179,64,.15)}.cb{background:rgba(0,255,136,.1);color:var(--neon);border:1px solid rgba(0,255,136,.15)}.cl{background:var(--cyan-dim);color:var(--cyan);border:1px solid rgba(0,224,255,.15)}.ci{background:rgba(122,129,148,.1);color:var(--muted);border:1px solid rgba(122,129,148,.15)}.cu{background:var(--red-dim);color:var(--red);border:1px solid rgba(255,82,82,.15)}
|
| 23 |
+
.ai{margin:0 1rem .75rem;border-radius:16px;padding:1rem;position:relative;overflow:hidden;background:linear-gradient(135deg,rgba(0,255,136,.05) 0%,rgba(0,224,255,.03) 100%);border:1px solid rgba(0,255,136,.1);animation:f .45s var(--ease-out) both}.ai::before{content:'';position:absolute;top:0;left:0;width:2px;height:100%;background:var(--neon);border-radius:2px;box-shadow:0 0 10px var(--neon-glow)}.aii{width:28px;height:28px;border-radius:8px;background:rgba(0,255,136,.08);display:flex;align-items:center;justify-content:center;color:var(--neon);font-size:.8rem;margin-right:.6rem;flex-shrink:0}.ait{font-size:.82rem;font-weight:600;margin-bottom:.15rem}.aix{font-size:.68rem;color:var(--text-sec);line-height:1.5}.aia{margin-top:.6rem;font-size:.65rem;color:var(--neon);font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:.3rem}
|
| 24 |
+
.mc{display:flex;align-items:center;gap:.75rem;padding:.9rem 1rem;margin:0 1rem .5rem;border-radius:16px;background:var(--glass);backdrop-filter:blur(10px);border:1px solid var(--glass-border);cursor:pointer;transition:all var(--dur-fast);box-shadow:var(--shadow-sm);animation:f .4s var(--ease-out) both}.mc:hover{transform:translateX(3px);border-color:rgba(255,255,255,.08);box-shadow:var(--shadow-md)}.ma{width:42px;height:42px;border-radius:50%;background:var(--bg);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:.9rem;flex-shrink:0;position:relative}.ma .sd{position:absolute;bottom:1px;right:1px;width:10px;height:10px;border-radius:50%;border:2px solid var(--bg-elev)}.ma .sd.on{background:var(--neon)}.ma .sd.aw{background:var(--amber)}.ma .sd.of{background:var(--muted)}.mn{font-size:.82rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mm{font-size:.6rem;color:var(--text-sec);margin-top:.1rem;display:flex;align-items:center;gap:.4rem}.ms{font-size:.55rem;padding:.1rem .4rem;border-radius:6px;background:rgba(0,224,255,.1);color:var(--cyan);font-weight:500}
|
| 25 |
+
.jl{position:relative;padding-left:1.5rem;margin:0 1rem}.jl::before{content:'';position:absolute;left:.45rem;top:0;bottom:0;width:2px;background:linear-gradient(to bottom,var(--neon),var(--cyan),transparent);border-radius:1px}.jn{position:relative;margin-bottom:1rem;animation:sr .4s var(--ease-out) both}.jd{position:absolute;left:-1.12rem;top:.3rem;width:10px;height:10px;border-radius:50%;background:var(--neon);border:2px solid var(--bg-elev);box-shadow:0 0 8px var(--neon-glow)}.jd.dn{background:var(--neon)}.jd.cr{background:var(--cyan);animation:pg 2s infinite}.jd.pd{background:var(--border)}.jc{padding:.75rem 1rem;border-radius:14px;background:var(--glass);border:1px solid var(--glass-border);margin-left:.3rem}.jt{font-size:.78rem;font-weight:600;margin-bottom:.1rem}.jdt{font-size:.58rem;color:var(--muted);font-family:var(--fm)}
|
| 26 |
+
.at{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;margin:0 1rem .5rem;border-radius:16px;background:var(--glass);border:1px solid var(--glass-border)}.ac{width:44px;height:44px;border-radius:50%;background:var(--bg);border:2px solid var(--border);display:flex;align-items:center;justify-content:center;flex-direction:column;position:relative}.ac.pr{border-color:var(--neon);background:rgba(0,255,136,.08)}.ac.ab{border-color:var(--red);background:var(--red-dim)}.ac.ex{border-color:var(--amber);background:var(--amber-dim)}.ad{font-size:.55rem;color:var(--muted);font-family:var(--fm)}.ai2{flex:1}.an{font-size:.82rem;font-weight:600}.ar{font-size:.6rem;color:var(--text-sec)}.ab2{height:4px;background:var(--bg);border-radius:2px;margin-top:.3rem;overflow:hidden;border:1px solid var(--border)}.af{height:100%;background:linear-gradient(90deg,var(--neon),var(--cyan));border-radius:2px;transition:width .5s var(--ease-out)}
|
| 27 |
+
.sg{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;padding:0 1rem .75rem}.sc2{padding:.9rem;border-radius:16px;background:var(--glass);border:1px solid var(--glass-border);position:relative;overflow:hidden;animation:f .4s var(--ease-out) both}.sc2::before{content:'';position:absolute;top:0;left:0;width:2px;height:100%}.sc2.sn::before{background:var(--neon);box-shadow:0 0 8px var(--neon-glow)}.sc2.sc::before{background:var(--cyan);box-shadow:0 0 8px var(--cyan-glow)}.sc2.sa::before{background:var(--amber)}.sc2.sp::before{background:var(--pink)}.sn2{font-family:var(--fm);font-size:1.6rem;font-weight:700;line-height:1}.sc2.sn .sn2{color:var(--neon)}.sc2.sc .sn2{color:var(--cyan)}.sc2.sa .sn2{color:var(--amber)}.sc2.sp .sn2{color:var(--pink)}.sl{font-size:.6rem;color:var(--muted);margin-top:.2rem;text-transform:uppercase;letter-spacing:.5px}
|
| 28 |
+
.tc{position:fixed;bottom:80px;left:50%;transform:translateX(-50%);z-index:9999;display:flex;flex-direction:column;gap:.4rem;pointer-events:none}.t{background:var(--glass);backdrop-filter:blur(16px);border:1px solid var(--glass-border);border-radius:14px;padding:.7rem 1rem;color:var(--text);font-size:.78rem;display:flex;align-items:center;gap:.5rem;box-shadow:var(--shadow-md);animation:ti .35s var(--ease-out);pointer-events:auto}.t i{color:var(--neon);font-size:.85rem}.sk{background:linear-gradient(90deg,var(--bg-elev) 25%,rgba(255,255,255,.03) 50%,var(--bg-elev) 75%);background-size:200% 100%;animation:sh 1.6s infinite;border-radius:6px}
|
| 29 |
+
.mo{position:absolute;inset:0;background:rgba(0,0,0,.55);backdrop-filter:blur(8px);z-index:900;display:none;align-items:flex-end;justify-content:center}.mo.op{display:flex;animation:f .3s var(--ease-out)}.ms2{background:var(--glass);backdrop-filter:blur(24px) saturate(1.3);border:1px solid var(--glass-border);border-radius:28px 28px 0 0;width:100%;max-width:500px;max-height:85vh;overflow-y:auto;padding:1.4rem;box-shadow:0 -12px 40px rgba(0,0,0,.4)}.mh{width:40px;height:3px;background:var(--border);border-radius:2px;margin:0 auto 1.1rem}
|
| 30 |
+
.fl{font-size:.62rem;color:var(--muted);margin-bottom:.3rem;display:block;padding-left:.25rem;font-weight:500;letter-spacing:.5px}.fi{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:.75rem .9rem;color:var(--text);font-family:var(--fb);font-size:.82rem;transition:all var(--dur-fast);outline:none;margin-bottom:.6rem}.fi:focus{border-color:rgba(0,255,136,.2);box-shadow:0 0 0 3px var(--neon-dim),0 0 12px rgba(0,255,136,.08)}.fi::placeholder{color:var(--muted)}
|
| 31 |
+
.lo{position:absolute;inset:0;background:var(--bg-elev);z-index:800;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;text-align:center}.lo.hd{display:none}.rg{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;width:100%;max-width:280px;margin-top:1.2rem}.rbtn{padding:1rem;border-radius:16px;background:var(--glass);border:1px solid var(--glass-border);cursor:pointer;transition:all var(--dur-fast);display:flex;flex-direction:column;align-items:center;gap:.4rem}.rbtn:hover{border-color:rgba(0,255,136,.15);transform:translateY(-2px)}.rbtn.ac{border-color:var(--neon);background:rgba(0,255,136,.08);box-shadow:0 0 16px rgba(0,255,136,.1)}.rbtn i{font-size:1.3rem;color:var(--muted);transition:color var(--dur-fast)}.rbtn.ac i{color:var(--neon)}.rbtn span{font-size:.65rem;color:var(--text-sec);font-weight:500}.rbtn.ac span{color:var(--text)}
|
| 32 |
+
.d.x .sc{font-size:1.05rem}.d.x .ni span{font-size:.65rem}.d.x .st{font-size:.68rem}.d.x .b{font-size:.9rem;padding:.85rem 1.8rem}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
</style>
|
| 34 |
</head>
|
| 35 |
<body>
|