*{margin:0;padding:0}body{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{width:100%;min-height:100vh}.fund-input{display:flex;gap:10px;width:100%}.fund-input input{flex:1;padding:clamp(12px,3vw,16px) clamp(16px,4vw,20px);font-size:clamp(15px,4vw,18px);background:var(--bg-input);border:2px solid var(--border);border-radius:16px;color:var(--text-primary);outline:none;transition:all .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:inset 0 2px 4px #0003}.fund-input input::placeholder{color:var(--text-muted)}.fund-input input:focus{border-color:#7c3aedcc;background:#0a0e27e6;box-shadow:inset 0 2px 4px #0003,0 0 30px #7c3aed4d}.fund-input button{padding:clamp(12px,3vw,16px) clamp(20px,5vw,32px);font-size:clamp(14px,4vw,17px);background:linear-gradient(135deg,#c084fc,#7c3aed);color:#fff;border:none;border-radius:16px;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);font-weight:700;letter-spacing:.5px;box-shadow:0 4px 15px #7c3aed66;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.fund-input button:hover:not(:disabled){transform:translateY(-2px) scale(1.05);box-shadow:0 8px 25px #7c3aed99,0 0 40px #7c3aed4d}.fund-input button:active:not(:disabled){transform:translateY(0) scale(.98)}.fund-input button:disabled{opacity:.5;cursor:not-allowed;background:#7c3aed4d;box-shadow:none}.fund-input input:disabled{background:#0a0e274d;opacity:.6}.fund-display{width:100%;padding:clamp(16px,4vw,24px) clamp(20px,5vw,32px);background:var(--bg-card);border:1px solid var(--border);border-radius:24px;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-shadow:var(--shadow-card),0 0 40px #0000004d}.fund-display.loading,.fund-display.error,.fund-display.empty{text-align:center;padding:40px 20px;color:var(--text-secondary);font-size:clamp(13px,3vw,15px)}.spinner{width:clamp(40px,10vw,50px);height:clamp(40px,10vw,50px);border:4px solid rgba(124,58,237,.1);border-top:4px solid #c084fc;border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 20px;box-shadow:0 0 30px #7c3aed4d}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fund-display.error{color:var(--danger);font-weight:600;text-shadow:0 0 20px rgba(239,68,68,.3)}.fund-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:clamp(20px,5vw,32px);padding-bottom:clamp(16px,4vw,24px);border-bottom:1px solid var(--border)}.fund-name{margin:0;font-size:clamp(18px,4.5vw,24px);color:var(--text-primary);font-weight:800;letter-spacing:-.5px}.fund-code{font-size:clamp(12px,3vw,14px);color:#c084fc;background:#7c3aed26;padding:6px 14px;border-radius:20px;font-weight:700;border:1px solid rgba(124,58,237,.3);box-shadow:0 0 20px #7c3aed33}.fund-value{text-align:center;margin-bottom:clamp(16px,4vw,28px)}.value-label{font-size:clamp(12px,3vw,14px);color:var(--text-secondary);margin-bottom:12px;font-weight:600;letter-spacing:.5px}.value-number{font-size:clamp(36px,9vw,56px);font-weight:900;color:var(--text-primary);letter-spacing:-2px;background:linear-gradient(135deg,#c084fc,#7c3aed);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;text-shadow:0 0 40px rgba(124,58,237,.4)}.fund-change{text-align:center;padding:clamp(16px,4vw,28px);border-radius:20px;margin-bottom:clamp(16px,4vw,24px);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.fund-change.positive{background:linear-gradient(135deg,#ef444433,#ef44441a);color:var(--danger);border:1px solid rgba(239,68,68,.3);box-shadow:0 0 30px #ef444433}.fund-change.negative{background:linear-gradient(135deg,#10b98133,#10b9811a);color:var(--success);border:1px solid rgba(16,185,129,.3);box-shadow:0 0 30px #10b98133}.change-label{font-size:clamp(12px,3vw,14px);margin-bottom:10px;opacity:.9;font-weight:600;letter-spacing:.5px}.change-value{font-size:clamp(32px,8vw,48px);font-weight:900;letter-spacing:-2px}.fund-footer{text-align:center;border-top:1px solid var(--border);padding-top:clamp(16px,4vw,24px)}.update-time,.trade-date{font-size:clamp(11px,2.5vw,12px);color:var(--text-muted);display:block;margin:4px 0;letter-spacing:.3px}.history-list{width:100%}.history-list h3{font-size:clamp(13px,3vw,15px);color:var(--text-secondary);margin-bottom:16px;padding:0 4px;font-weight:600;letter-spacing:.5px;text-shadow:0 0 20px rgba(124,58,237,.4)}.history-items{display:flex;flex-direction:column;gap:12px}.history-item{background:var(--bg-card);border:1px solid var(--border);border-radius:20px;padding:clamp(14px,3.5vw,18px) clamp(14px,3.5vw,20px);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-shadow:var(--shadow-card);transition:all .3s cubic-bezier(.4,0,.2,1)}.history-item:hover{transform:translateY(-3px) scale(1.02);background:#0f172af2;border-color:#7c3aed66;box-shadow:0 8px 30px #0006,0 0 25px #7c3aed33}.history-code{font-weight:800;font-size:clamp(14px,3.5vw,17px);color:var(--text-primary);letter-spacing:-.3px}.history-name{flex:1;margin:0 12px;color:var(--text-secondary);font-size:clamp(12px,3vw,14px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.history-time{font-size:clamp(10px,2.5vw,12px);color:var(--text-muted);letter-spacing:.2px}.portfolio-list{width:100%}.portfolio-list h3{font-size:clamp(13px,3vw,15px);color:var(--text-secondary);margin-bottom:16px;padding:0 4px;font-weight:600;letter-spacing:.5px;text-shadow:0 0 20px rgba(124,58,237,.4)}.portfolio-summary{background:var(--bg-card);padding:clamp(16px,4vw,20px) clamp(18px,4.5vw,24px);border-radius:24px;margin-bottom:16px;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border);box-shadow:var(--shadow-card)}.summary-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.summary-row:last-child{margin-bottom:0}.summary-label{font-size:clamp(13px,3.25vw,15px);color:var(--text-secondary);font-weight:600;letter-spacing:.3px}.summary-value{font-size:clamp(18px,4.5vw,24px);font-weight:800;letter-spacing:-.5px}.summary-value.assets{color:var(--text-primary);text-shadow:0 0 20px rgba(255,255,255,.1)}.summary-value.positive{color:var(--danger);text-shadow:0 0 20px rgba(239,68,68,.4)}.summary-value.negative{color:var(--success);text-shadow:0 0 20px rgba(16,185,129,.4)}.portfolio-items{display:flex;flex-direction:column;gap:14px}.portfolio-item{background:var(--bg-card);border-radius:24px;padding:clamp(16px,4vw,20px) clamp(18px,4.5vw,28px);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border);box-shadow:var(--shadow-card);transition:all .3s cubic-bezier(.4,0,.2,1);position:relative}.portfolio-item.clickable{cursor:pointer}.portfolio-item.clickable:hover{transform:translateY(-4px) scale(1.02);background:#0f172af2;border-color:#7c3aed66;box-shadow:0 8px 40px #0006,0 0 30px #7c3aed33}.portfolio-item:active{transform:translateY(0) scale(.98)}.item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.item-code{font-weight:800;font-size:clamp(16px,4vw,20px);color:var(--text-primary);letter-spacing:-.3px}.remove-button{background:none;border:none;color:var(--text-muted);font-size:clamp(22px,5.5vw,32px);cursor:pointer;width:clamp(24px,6vw,32px);height:clamp(24px,6vw,32px);display:flex;align-items:center;justify-content:center;padding:0;line-height:1;transition:all .3s ease}.remove-button:hover{color:var(--danger);background:#ef444426;border-radius:50%;box-shadow:0 0 20px #ef44444d;transform:rotate(90deg)}.item-name{font-size:clamp(13px,3.25vw,15px);color:var(--text-secondary);margin-bottom:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;letter-spacing:-.2px}.item-details{display:flex;flex-direction:column;gap:12px}.detail-row{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--bg-input);border-radius:16px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.detail-label{font-size:clamp(12px,3vw,14px);color:var(--text-secondary);font-weight:600;letter-spacing:.2px}.detail-value{font-size:clamp(13px,3.25vw,16px);font-weight:700;color:var(--text-primary);letter-spacing:-.2px}.profit-row{padding-top:18px;border-top:1px solid var(--border)}.profit-value{font-weight:900;font-size:clamp(16px,4vw,22px);letter-spacing:-.5px}.profit-value.positive{color:var(--danger);text-shadow:0 0 15px rgba(239,68,68,.4)}.profit-value.negative{color:var(--success);text-shadow:0 0 15px rgba(16,185,129,.4)}.add-portfolio-overlay{position:fixed;inset:0;background:#000000d9;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px;animation:fadeIn .3s ease-out}.add-portfolio-dialog{background:#0f172afa;border:1px solid var(--border);border-radius:32px;width:100%;max-width:400px;box-shadow:0 20px 80px #0009,0 0 40px #7c3aed33;animation:slideUp .4s cubic-bezier(.4,0,.2,1);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.dialog-header{display:flex;justify-content:space-between;align-items:center;padding:clamp(20px,5vw,28px);border-bottom:1px solid var(--border)}.dialog-header h2{margin:0;font-size:clamp(18px,4.5vw,22px);font-weight:800;color:var(--text-primary);letter-spacing:-.5px}.dialog-form{padding:clamp(20px,5vw,32px)}.dialog-actions{display:flex;gap:12px;justify-content:flex-end}.cancel-button,.confirm-button{padding:clamp(10px,2.5vw,14px) clamp(18px,4.5vw,26px);font-size:clamp(13px,3.25vw,15px);border-radius:16px;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);font-weight:700;letter-spacing:.3px}.cancel-button{background:var(--bg-input);color:var(--text-secondary);border:1px solid var(--border)}.cancel-button:hover{background:#0a0e27e6;border-color:#7c3aed66}.confirm-button{background:linear-gradient(135deg,#c084fc,#8b5cf6);color:#fff;border:none;box-shadow:0 4px 20px #7c3aed66}.confirm-button:hover{transform:translateY(-2px);box-shadow:0 8px 30px #7c3aed99}.portfolio-detail-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease-out;padding:20px}.portfolio-detail-dialog{background:#fff;border-radius:12px;width:100%;max-width:600px;max-height:90vh;overflow-y:auto;box-shadow:0 4px 20px #00000026;animation:slideUp .3s ease-out}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.detail-header{display:flex;justify-content:space-between;align-items:flex-start;padding:20px 24px;border-bottom:1px solid #e0e0e0}.header-left{flex:1}.detail-header .fund-name{margin:0 0 8px;font-size:22px;font-weight:600;color:#333;line-height:1.3}.detail-header .fund-code{font-size:14px;color:#999;background:#f5f5f5;padding:4px 8px;border-radius:4px}.close-button{background:none;border:none;font-size:28px;color:#999;cursor:pointer;width:32px;height:32px;display:flex;align-items:center;justify-content:center;padding:0;line-height:1;transition:color .2s;flex-shrink:0;margin-left:12px}.close-button:hover{color:#666}.detail-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;padding:24px;border-bottom:1px solid #f0f0f0}.summary-item{text-align:center}.summary-label{font-size:13px;color:#666;margin-bottom:8px}.summary-value{font-size:24px;font-weight:600}.summary-value.change.up,.summary-value.profit.up{color:#ef5350}.summary-value.change.down,.summary-value.profit.down{color:#4caf50}.summary-value.amount{color:#333}.chart-container{padding:24px}.chart-title{font-size:16px;font-weight:600;color:#333;margin:0 0 16px}.chart{width:100%;height:320px}@media(max-width:480px){.detail-summary{grid-template-columns:1fr;gap:20px}.detail-header{padding:16px}.detail-header .fund-name{font-size:18px}.chart-container{padding:16px}}.auth-overlay{position:fixed;inset:0;background:#000000e6;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);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}}.auth-modal{background:#0f172afa;border:1px solid var(--border);border-radius:32px;width:100%;max-width:400px;box-shadow:0 20px 80px #000000b3,0 0 40px #7c3aed4d;animation:slideUp .4s cubic-bezier(.4,0,.2,1);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}@keyframes slideUp{0%{transform:translateY(30px) scale(.95);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.auth-header{display:flex;justify-content:space-between;align-items:center;padding:clamp(20px,5vw,28px);border-bottom:1px solid var(--border)}.auth-header h2{margin:0;font-size:clamp(18px,4.5vw,22px);font-weight:800;color:var(--text-primary);letter-spacing:-.5px}.close-button{background:none;border:none;font-size:clamp(24px,6vw,32px);color:var(--text-muted);cursor:pointer;width:32px;height:32px;display:flex;align-items:center;justify-content:center;padding:0;line-height:1;transition:all .3s ease}.close-button:hover{color:var(--danger);background:#ef444426;border-radius:50%;box-shadow:0 0 20px #ef44444d}.auth-form{padding:clamp(20px,5vw,32px)}.form-group{margin-bottom:clamp(16px,4vw,24px)}.form-group label{display:block;margin-bottom:10px;font-size:clamp(13px,3.25vw,15px);font-weight:700;color:var(--text-secondary);letter-spacing:.3px}.form-group input{width:100%;padding:clamp(12px,3vw,16px) clamp(14px,3.5vw,18px);font-size:clamp(14px,3.5vw,17px);background:var(--bg-input);border:2px solid var(--border);border-radius:16px;color:var(--text-primary);outline:none;transition:all .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:inset 0 2px 4px #0003}.form-group input::placeholder{color:var(--text-muted)}.form-group input:focus{border-color:#7c3aedcc;background:#0a0e27e6;box-shadow:inset 0 2px 4px #0003,0 0 30px #7c3aed4d}.error-message{background:#ef44441a;color:var(--danger);padding:14px;border-radius:16px;margin-bottom:clamp(16px,4vw,24px);font-size:clamp(12px,3vw,14px);border:1px solid rgba(239,68,68,.2);font-weight:600}.auth-actions{margin-bottom:20px}.submit-button{width:100%;padding:clamp(12px,3vw,16px) clamp(20px,5vw,28px);font-size:clamp(14px,3.5vw,17px);font-weight:800;color:#fff;background:linear-gradient(135deg,#c084fc,#8b5cf6);border:none;border-radius:20px;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);letter-spacing:.3px;box-shadow:0 4px 20px #7c3aed66}.submit-button:hover{transform:translateY(-2px);box-shadow:0 8px 30px #7c3aed99}.auth-toggle{text-align:center;color:var(--text-secondary);font-size:clamp(12px,3vw,14px)}.auth-toggle p{margin:0}.auth-toggle button{background:none;border:none;color:#c084fc;font-weight:800;cursor:pointer;padding:0;font-size:inherit;letter-spacing:-.2px}.auth-toggle button:hover{text-decoration:underline;text-shadow:0 0 20px rgba(192,132,252,.6)}:root{--bg-primary: #0a0e27;--bg-secondary: #16213e;--bg-card: rgba(15, 23, 42, .8);--bg-input: rgba(10, 14, 39, .6);--text-primary: #e2e8f0;--text-secondary: #94a3b8;--text-muted: #64748b;--accent-primary: #7c3aed;--accent-secondary: #8b5cf6;--success: #10b981;--danger: #ef4444;--border: rgba(124, 58, 237, .3);--shadow-glow: 0 0 30px rgba(124, 58, 237, .4);--shadow-card: 0 4px 20px rgba(0, 0, 0, .5)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--bg-primary);color:var(--text-primary);min-height:100vh}.app{background:linear-gradient(135deg,var(--bg-primary) 0%,var(--bg-secondary) 50%,#1a1a2e 100%);padding:12px;position:relative;min-height:100vh}.app:before{content:"";position:fixed;inset:0;background:radial-gradient(circle at 10% 20%,rgba(124,58,237,.3) 0%,transparent 40%),radial-gradient(circle at 90% 80%,rgba(139,92,246,.3) 0%,transparent 40%);pointer-events:none;z-index:0}.container{max-width:100%;margin:0 auto;position:relative;z-index:1}.header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding:8px 4px}.header>div:first-child{text-align:left}.header h1{font-size:clamp(24px,6vw,32px);margin-bottom:4px;font-weight:800;letter-spacing:-.5px;background:linear-gradient(135deg,#c084fc,#7c3aed);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;text-shadow:0 0 40px rgba(124,58,237,.6)}.subtitle{font-size:clamp(11px,2.5vw,13px);opacity:.7;font-weight:500;letter-spacing:1px;text-transform:uppercase;color:var(--text-muted)}.user-info{display:flex;align-items:center;gap:10px}.username{font-size:clamp(11px,2.5vw,13px);font-weight:600;padding:6px 14px;background:#7c3aed33;border:1px solid rgba(124,58,237,.4);border-radius:20px;color:#c084fc;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 0 20px #7c3aed4d}.logout-button{padding:7px 14px;font-size:clamp(11px,2.5vw,12px);background:transparent;color:var(--text-secondary);border:1px solid rgba(148,163,184,.3);border-radius:20px;cursor:pointer;transition:all .3s ease;font-weight:600;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.logout-button:hover{background:#ef444433;border-color:#ef444480;color:var(--danger);box-shadow:0 0 20px #ef44444d}.main{display:flex;flex-direction:column;gap:14px}.action-buttons{width:100%;display:flex;gap:10px}.add-portfolio-button{flex:1;padding:clamp(12px,3vw,16px) clamp(20px,5vw,28px);font-size:clamp(13px,3vw,15px);font-weight:700;color:#c084fc;background:#7c3aed26;border:2px solid rgba(124,58,237,.4);border-radius:16px;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;align-items:center;justify-content:center;gap:6px;letter-spacing:.5px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 4px 20px #0000004d,0 0 30px #7c3aed33}.add-portfolio-button:before{content:"+";font-size:clamp(18px,4vw,24px);font-weight:800;color:#c084fc}.add-portfolio-button:hover{transform:translateY(-2px) scale(1.02);background:#7c3aed40;border-color:#7c3aedb3;box-shadow:0 8px 30px #7c3aed66,0 0 50px #7c3aed4d}.add-portfolio-button:active{transform:translateY(0) scale(.98)}.footer{text-align:center;margin-top:30px;color:var(--text-muted);font-size:clamp(10px,2vw,11px);padding:0 8px;letter-spacing:.3px}
