body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0;overscroll-behavior:none;touch-action:manipulation}html{height:100vh;height:100dvh}.floating-panel-toggle{align-items:center;background:#007bff;border:none;border-radius:50%;bottom:20px;box-shadow:0 4px 12px #007bff4d;color:#fff;cursor:pointer;display:flex;flex-direction:column;font-size:12px;font-weight:700;height:56px;justify-content:center;position:fixed;right:20px;transition:all .3s ease;width:56px;z-index:1001}.floating-panel-toggle:hover{background:#0056b3;transform:scale(1.05)}.floating-panel-toggle .toggle-icon{font-size:16px;line-height:1}.floating-panel-toggle .toggle-text{font-size:8px;line-height:1;margin-top:2px}@media (max-width:768px){.floating-panel-toggle{height:50px;width:50px}.floating-panel-toggle .toggle-icon{font-size:14px}.floating-panel-toggle .toggle-text{font-size:7px}}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.sr-only-focusable:focus,.sr-only-focusable:focus-within{clip:auto;height:auto;overflow:visible;position:static;white-space:normal;width:auto}.admin-page{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0 auto;max-width:1200px;padding:20px}.admin-page h1{color:#333;font-size:2rem;font-weight:600;margin-bottom:30px}.admin-page .loading{color:#666;font-size:1.1rem;padding:40px;text-align:center}.admin-page .message{align-items:center;border:1px solid;border-radius:6px;display:flex;font-weight:500;justify-content:space-between;margin:10px 0;padding:12px 16px}.admin-page .message.success{background-color:#d4edda;border-color:#c3e6cb;color:#155724}.admin-page .message.error{background-color:#f8d7da;border-color:#f5c6cb;color:#721c24}.admin-page .message .close-btn{background:none;border:none;color:inherit;cursor:pointer;font-size:1.2rem;margin-left:10px;padding:0}.admin-page .search-container{margin-bottom:20px}.admin-page .search-input{border:2px solid #e1e5e9;border-radius:6px;font-size:1rem;max-width:400px;padding:10px 12px;transition:border-color .2s ease;width:100%}.admin-page .search-input:focus{border-color:#007bff;box-shadow:0 0 0 3px #007bff1a;outline:none}.admin-page .btn{align-items:center;border:none;border-radius:6px;cursor:pointer;display:inline-flex;font-size:1rem;font-weight:500;gap:8px;padding:10px 20px;transition:all .2s ease}.admin-page .btn:hover{box-shadow:0 2px 8px #00000026;transform:translateY(-1px)}.admin-page .btn:active{transform:translateY(0)}.admin-page .btn.primary{background-color:#007bff;color:#fff}.admin-page .btn.primary:hover{background-color:#0056b3}.admin-page .btn.secondary{background-color:#6c757d;color:#fff}.admin-page .btn.secondary:hover{background-color:#545b62}.admin-page .btn.danger{background-color:#dc3545;color:#fff}.admin-page .btn.danger:hover{background-color:#c82333}.admin-page .btn.success{background-color:#28a745;color:#fff}.admin-page .btn.success:hover{background-color:#1e7e34}.admin-page .form{background-color:#f8f9fa;border:2px solid #e1e5e9;border-radius:8px;margin-bottom:30px;padding:24px}.admin-page .form-group{margin-bottom:16px}.admin-page .form-group label{color:#333;display:block;font-weight:600;margin-bottom:6px}.admin-page .form-input{border:2px solid #e1e5e9;border-radius:6px;font-size:1rem;padding:10px 12px;transition:border-color .2s ease;width:100%}.admin-page .form-input:focus{border-color:#007bff;box-shadow:0 0 0 3px #007bff1a;outline:none}.admin-page .form-textarea{min-height:80px;resize:vertical}.admin-page .form-actions{display:flex;gap:12px;margin-top:20px}.admin-page .patient-card{background-color:#fff;border:2px solid #e1e5e9;border-radius:6px;margin-bottom:16px;padding:16px;transition:box-shadow .2s ease,border-color .2s ease}.admin-page .patient-card:hover{border-color:#007bff;box-shadow:0 2px 8px #00000014}.admin-page .patient-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:8px}.admin-page .patient-title{color:#333;font-size:1.2rem;font-weight:600;margin:0}.admin-page .patient-actions{display:flex;gap:6px}.admin-page .patient-meta{color:#666;font-size:.8rem;line-height:1.3;margin-bottom:8px}.admin-page .patient-description{color:#555;font-size:.9rem;line-height:1.4;margin-bottom:12px}.admin-page .edit-form{background-color:#f8f9fa;border:1px solid #dee2e6;border-radius:6px;margin-bottom:20px;padding:20px}.admin-page .edit-form .form-actions{justify-content:flex-end}.admin-page .section{border-top:1px solid #e1e5e9;margin-top:20px;padding-top:20px}.admin-page .section-title{color:#333;font-size:1.2rem;font-weight:600;margin-bottom:12px}.admin-page .file-list{list-style:none;margin:0;padding:0}.admin-page .file-item{background-color:#f8f9fa;border:1px solid #e1e5e9;border-radius:4px;font-size:.9rem;margin-bottom:4px;padding:8px 12px}.admin-page .upload-section{background-color:#f8f9fa;border:2px dashed #dee2e6;border-radius:6px;margin-top:12px;padding:16px}.admin-page .upload-section.uploading{background-color:#fff3cd;border-color:#ffc107}.admin-page .upload-input{margin-bottom:8px}.admin-page .upload-status{color:#856404;font-size:.9rem;font-weight:500}.admin-page .share-section{margin-top:20px}.admin-page .share-actions{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:16px}.admin-page .share-link{background-color:#f8f9fa;border:1px solid #e1e5e9;border-radius:6px;margin-bottom:12px;padding:12px}.admin-page .share-link.expired{background-color:#f8d7da;border-color:#f5c6cb}.admin-page .share-url-container{align-items:center;display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.admin-page .share-url{background-color:#fff;border:1px solid #dee2e6;border-radius:4px;flex:1 1;font-family:monospace;font-size:.85rem;padding:8px 12px}.admin-page .share-url.expired{background-color:#f8d7da}.admin-page .share-meta{color:#666;font-size:.8rem}.admin-page .share-meta.expired{color:#721c24}@media (max-width:768px){.admin-page{padding:16px}.admin-page .patient-header{flex-direction:column;gap:12px}.admin-page .patient-actions{align-self:flex-end}.admin-page .share-actions{flex-direction:column}.admin-page .share-url-container{flex-direction:column;gap:8px}.admin-page .form-actions{flex-direction:column}}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.admin-page .message,.admin-page .patient-card{animation:fadeIn .3s ease-out}.admin-page .pagination{align-items:center;display:flex;gap:16px;justify-content:center;margin-top:24px;padding:16px}.admin-page .page-info{color:#666;font-size:.9rem;font-weight:500}.admin-page .page-numbers{align-items:center;display:flex;gap:8px}.admin-page .page-number{background-color:#fff;border:2px solid #e1e5e9;border-radius:6px;color:#007bff;cursor:pointer;font-size:.9rem;font-weight:500;min-width:40px;padding:8px 12px;text-align:center;transition:all .2s ease}.admin-page .page-number:hover{background-color:#f8f9fa;border-color:#007bff}.admin-page .page-number.active{background-color:#007bff;border-color:#007bff;color:#fff}.admin-page .page-number.active:hover{background-color:#0056b3}.admin-page .no-patients{color:#666;font-size:1.1rem;padding:40px;text-align:center}.admin-page .file-size{color:#666;font-size:.8rem;margin-left:8px}.admin-page .search-results{color:#666;font-size:.9rem;margin-left:16px}@media (max-width:768px){.admin-page .pagination{flex-direction:column;gap:12px}.admin-page .page-numbers{flex-wrap:wrap;justify-content:center}}.confirm-dialog-overlay{align-items:center;background-color:#00000073;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:2000}.confirm-dialog{background-color:#fff;border-radius:8px;box-shadow:0 8px 24px #0003;max-width:420px;outline:none;padding:24px;width:calc(100% - 48px)}.confirm-dialog-title{color:#2d3135;font-size:1.1rem;margin:0 0 12px}.confirm-dialog-message{color:#3c4145;font-size:.95rem;line-height:1.5;margin:0 0 12px}.confirm-dialog-target{align-items:baseline;background-color:#f8f9fa;border-left:3px solid #dee2e6;border-radius:4px;display:flex;font-size:.9rem;gap:8px;margin:0 0 16px;padding:8px 12px}.confirm-dialog-target-label{color:#6c757d;flex-shrink:0;font-size:.8rem}.confirm-dialog-target-name{color:#2d3135;font-weight:700;overflow-wrap:anywhere}.confirm-dialog-target-name.danger{color:#dc3545}.confirm-dialog-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:8px}.confirm-dialog .btn{border:none;border-radius:4px;cursor:pointer;font-size:.9rem;padding:8px 16px}.confirm-dialog .confirm-cancel{background-color:#6c757d;color:#fff}.confirm-dialog .confirm-cancel:hover{background-color:#545b62}.confirm-dialog .confirm-danger{background-color:#dc3545;color:#fff}.confirm-dialog .confirm-danger:hover{background-color:#c82333}.confirm-dialog .confirm-primary{background-color:#007bff;color:#fff}.confirm-dialog .confirm-primary:hover{background-color:#0056b3}.login-page{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;min-height:100vh;padding:20px}.login-container{background:#fff;border-radius:12px;box-shadow:0 20px 40px #0000001a;max-width:400px;padding:40px;text-align:center;width:100%}.login-header{margin-bottom:30px}.login-header h1{color:#333;font-size:24px;font-weight:600;margin-bottom:8px}.login-header p{color:#666;font-size:14px;margin:0}.login-form{margin-bottom:30px}.form-group{margin-bottom:20px;text-align:left}.form-group label{color:#333;display:block;font-size:14px;font-weight:500;margin-bottom:6px}.form-group input{border:2px solid #e1e5e9;border-radius:8px;box-sizing:border-box;font-size:16px;padding:12px 16px;transition:border-color .2s ease,box-shadow .2s ease;width:100%}.form-group input:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a;outline:none}.form-group input:disabled{background-color:#f8f9fa;cursor:not-allowed}.error-message{background-color:#fee;border:1px solid #fcc;border-radius:6px;color:#c33;font-size:14px;margin-bottom:20px;padding:10px 12px}.login-btn{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:16px;font-weight:600;padding:14px 20px;transition:transform .2s ease,box-shadow .2s ease;width:100%}.login-btn:hover:not(:disabled){box-shadow:0 8px 20px #667eea4d;transform:translateY(-2px)}.login-btn:active:not(:disabled){transform:translateY(0)}.login-btn:disabled{cursor:not-allowed;opacity:.7;transform:none}.login-footer{border-top:1px solid #e1e5e9;color:#666;padding-top:20px}.login-footer p{font-size:14px;font-weight:500;margin:0 0 8px}.login-footer small{color:#999;font-size:12px}@media (max-width:480px){.login-page{padding:10px}.login-container{padding:30px 20px}.login-header h1{font-size:20px}.form-group input,.login-btn{font-size:16px}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.login-btn:disabled:after{animation:spin 1s ease-in-out infinite;border:2px solid #ffffff4d;border-radius:50%;border-top-color:#fff;content:"";display:inline-block;height:16px;margin-left:8px;width:16px}.form-group input:focus+label,.form-group input:not(:placeholder-shown)+label{color:#667eea}.password-toggle{position:relative}.password-toggle input[type=password]{padding-right:50px}.password-toggle .toggle-btn{background:none;border:none;color:#666;cursor:pointer;font-size:14px;padding:4px;position:absolute;right:12px;top:50%;transform:translateY(-50%)}.password-toggle .toggle-btn:hover{color:#333}.login-lock-notice{font-feature-settings:"tnum";background-color:#fdf6ec;border:1px solid #f0d9b8;border-left:4px solid #e69a2e;border-radius:4px;color:#8a5c14;font-size:14px;font-variant-numeric:tabular-nums;font-weight:600;margin-bottom:16px;padding:10px 12px}.login-forgot-hint{color:#666;font-size:13px;margin:16px 0 0;text-align:center}.App{text-align:center}.App-logo{height:40vmin;pointer-events:none}@media (prefers-reduced-motion:no-preference){.App-logo{animation:App-logo-spin 20s linear infinite}}.App-header{align-items:center;background-color:#282c34;color:#fff;display:flex;flex-direction:column;font-size:calc(10px + 2vmin);justify-content:center;min-height:100vh}.App-link{color:#61dafb}@keyframes App-logo-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.toast-stack{flex-direction:column;max-width:min(92vw,380px);pointer-events:none;position:fixed;right:16px;top:16px;z-index:3000}.toast,.toast-stack{display:flex;gap:10px}.toast{align-items:center;animation:toastSlideIn .25s ease-out;background:#fff;border-left:4px solid #007bff;border-radius:6px;box-shadow:0 4px 14px #0000002e;color:#333;font-size:14px;padding:12px 14px;pointer-events:auto}@keyframes toastSlideIn{0%{opacity:0;transform:translateX(24px)}to{opacity:1;transform:translateX(0)}}.toast--success{border-left-color:#2ea850}.toast--success .toast-icon{color:#2ea850}.toast--error{border-left-color:#dc3545}.toast--error .toast-icon{color:#dc3545}.toast--warning{border-left-color:#e69a2e}.toast--warning .toast-icon{color:#e69a2e}.toast--info{border-left-color:#007bff}.toast--info .toast-icon{color:#007bff}.toast-icon{flex-shrink:0;font-size:16px;font-weight:700}.toast-message{flex:1 1;line-height:1.4;word-break:break-word}.toast-action{background:none;border:1px solid #007bff;border-radius:4px;color:#007bff;cursor:pointer;flex-shrink:0;font-size:13px;font-weight:600;padding:4px 10px}.toast-action:hover{background-color:#007bff;color:#fff}.toast-close{background:none;border:none;border-radius:4px;color:#999;cursor:pointer;flex-shrink:0;font-size:14px;line-height:1;padding:4px 6px}.toast-close:hover{background-color:#f0f0f0;color:#333}@media (max-width:480px){.toast-stack{left:8px;max-width:none;right:8px;top:8px}}