.poster-page{min-height:100vh;display:flex;align-items:center;justify-content:center}.poster-container{width:100%;max-width:600px;display:flex;justify-content:center;align-items:center}.poster-content{display:flex;flex-direction:column;align-items:center;gap:15px;width:100%}.poster-image{width:100%;max-width:400px;height:auto}.signup-btn{background:linear-gradient(135deg,#ff6b6b,#ee5a24);color:#fff;border:none;padding:15px 40px;font-size:18px;font-weight:700;border-radius:50px;cursor:pointer;transition:all .3s ease;text-transform:uppercase;letter-spacing:1px;position:fixed;left:50%;bottom:16px;transform:translate(-50%);z-index:1000}.signup-btn:active{transform:translate(-50%);box-shadow:0 6px 20px #ee5a244d}@media (max-width: 768px){.poster-image{max-width:450px}.signup-btn{padding:12px 30px;font-size:16px}}@media (max-width: 480px){.poster-image{max-width:400px}.signup-btn{padding:10px 25px;font-size:14px}}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;position:relative}.login-container{width:100%;max-width:400px;background:#fffffff2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:20px;padding:40px 30px;box-shadow:0 20px 40px #0000001a;animation:fadeIn .6s ease-out}.login-header{text-align:center;margin-bottom:40px}.login-title{font-size:28px;font-weight:700;color:#333;margin-bottom:10px}.login-subtitle{font-size:16px;color:#666;line-height:1.5}.login-form{margin-bottom:30px}.form-group{margin-bottom:25px}.form-label{display:block;font-size:14px;font-weight:600;color:#333;margin-bottom:8px}.form-input{width:100%;height:50px;padding:0 16px;font-size:16px;border:2px solid #e1e5e9;border-radius:12px;background-color:#fff;transition:all .3s ease}.form-input:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.form-input::placeholder{color:#999}.verification-input-group{display:flex;gap:12px;align-items:center}.verification-input{flex:1}.send-code-btn{height:50px;padding:0 20px;font-size:14px;font-weight:600;color:#667eea;background-color:#f8f9ff;border:2px solid #667eea;border-radius:12px;cursor:pointer;transition:all .3s ease;white-space:nowrap;min-width:100px}.send-code-btn:hover:not(:disabled){background-color:#667eea;color:#fff}.send-code-btn:disabled{opacity:.6;cursor:not-allowed}.login-btn{width:100%;height:54px;font-size:18px;font-weight:600;color:#fff;background:#f25e33;border-radius:12px;cursor:pointer;transition:all .3s ease;margin-top:10px}.login-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 25px #667eea4d}.login-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.login-tips{text-align:center;padding:20px;background-color:#667eea1a;border-radius:12px;border:1px solid rgba(102,126,234,.2)}.tip-text{font-size:14px;color:#666;line-height:1.5}.tip-text strong{color:#667eea;font-weight:600}@media (max-width: 480px){.login-page{padding:60px 15px 15px;align-items:flex-start}.login-container{padding:30px 20px;border-radius:16px}.login-title{font-size:24px}.login-subtitle{font-size:14px}.form-input{height:48px;font-size:16px}.send-code-btn{height:48px;padding:0 16px;font-size:13px;min-width:90px}.login-btn{height:50px;font-size:16px}.verification-input-group{gap:10px}}@media (orientation: landscape) and (max-height: 500px){.login-page{padding:10px;align-items:center}.login-container{padding:20px;max-width:500px}.login-header{margin-bottom:20px}.form-group{margin-bottom:15px}.login-tips{padding:15px}}@media (min-width: 768px){.login-container{max-width:450px;padding:50px 40px}}.link-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px;animation:fadeIn .3s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.link-modal-container{position:relative;width:90%;max-width:420px;background:#fff;border-radius:24px;overflow:hidden;animation:slideInUp .4s ease-out}@keyframes slideInUp{0%{opacity:0;transform:translateY(50px) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}.link-modal-content{background:#fff;padding:0;color:#fff;text-align:center}.link-modal-header{padding:40px 30px 30px;position:relative}.link-modal-header:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><pattern id="grain" width="100" height="100" patternUnits="userSpaceOnUse"><circle cx="25" cy="25" r="1" fill="rgba(255,255,255,0.1)"/><circle cx="75" cy="75" r="1" fill="rgba(255,255,255,0.1)"/><circle cx="50" cy="10" r="0.5" fill="rgba(255,255,255,0.05)"/><circle cx="10" cy="60" r="0.5" fill="rgba(255,255,255,0.05)"/><circle cx="90" cy="40" r="0.5" fill="rgba(255,255,255,0.05)"/></pattern></defs><rect width="100" height="100" fill="url(%23grain)"/></svg>');pointer-events:none}.header-title{font-size:20px;font-weight:600;color:#000;margin-bottom:12px;line-height:1.3;position:relative;z-index:1}.header-subtitle{font-size:18px;font-weight:600;color:#000;display:flex;align-items:center;justify-content:center;gap:8px;position:relative;z-index:1}.point-icon{font-size:16px;animation:bounce 2s ease-in-out infinite}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-4px)}60%{transform:translateY(-2px)}}.qr-code-section{background:#f6f6f6;padding:30px;margin:0 20px 20px;border-radius:20px}.qr-code-container{display:flex;flex-direction:column;align-items:center;margin-top:10px;gap:8px}.qr-code-wrapper{position:relative;width:200px;height:200px;background:#fff}.qr-code-wrapper img{width:100%;height:100%;object-fit:cover}.teacher-label{font-size:16px;font-weight:600;color:#333;padding:8px 20px;display:inline-block}.scan-tip{font-size:14px;color:#b5acb0;display:flex;align-items:center;justify-content:center;gap:8px}.tip-arrow{font-size:16px;animation:bounce 2s ease-in-out infinite;animation-delay:.5s}@media (max-width: 480px){.link-modal-overlay{padding:16px}.link-modal-container{max-width:90%}.link-modal-header{padding:30px 20px 20px}.qr-code-section{margin:0 16px 16px;padding:0 20px 15px}.qr-code-wrapper{width:180px;height:180px}.header-title{font-size:18px}}.app{min-height:100vh;display:flex;flex-direction:column;position:relative;overflow:hidden}.login-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000;padding:20px}.login-modal-content{position:relative;background:#fff;border-radius:12px;max-width:400px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 10px 30px #0000004d}.login-modal-close{position:absolute;top:15px;right:15px;background:none;border:none;font-size:24px;cursor:pointer;color:#666;z-index:1001;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background-color .2s}.login-modal-close:hover{background-color:#f0f0f0}@media (max-width: 768px){.app{min-height:100vh;min-height:-webkit-fill-available}}@media (orientation: landscape) and (max-height: 500px){.app{min-height:100vh}}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f5f5f5;overflow-x:hidden}#root{height:100%;min-height:100vh}button,input,textarea{-webkit-appearance:none;-webkit-tap-highlight-color:transparent;outline:none;border:none}input[type=text],input[type=tel],input[type=number],input[type=email],input[type=password]{font-size:16px}::-webkit-scrollbar{width:0;background:transparent}.safe-area{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@media (max-width: 480px){html{font-size:14px}}@media (min-width: 481px) and (max-width: 768px){html{font-size:15px}}@media (min-width: 769px){html{font-size:16px}}
