@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{0%{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}@keyframes slideInUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideInDown{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes slideInLeft{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slideInRight{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes slideOutUp{0%{transform:translateY(0)}to{transform:translateY(-100%)}}@keyframes slideOutDown{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}@keyframes scaleUp{0%{transform:scale(.8)}to{transform:scale(1)}}@keyframes zoomIn{0%{opacity:0;transform:scale(.3)}to{opacity:1;transform:scale(1)}}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.3)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-20px)}60%{transform:translateY(-10px)}}@keyframes bounceIn{0%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(.9)}to{transform:scale(1)}}@keyframes bounceOut{0%{transform:scale(1)}25%{transform:scale(.95)}50%{opacity:1;transform:scale(1.1)}to{opacity:0;transform:scale(.3)}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-8px)}20%,40%,60%,80%{transform:translateX(8px)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}@keyframes pulseScale{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes pulseRing{0%{transform:scale(.8);opacity:1}to{transform:scale(1.4);opacity:0}}@keyframes rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes rotateIn{0%{opacity:0;transform:rotate(-200deg)}to{opacity:1;transform:rotate(0deg)}}@keyframes flipInX{0%{transform:perspective(400px) rotateX(90deg);opacity:0}to{transform:perspective(400px) rotateX(0deg);opacity:1}}@keyframes flipInY{0%{transform:perspective(400px) rotateY(90deg);opacity:0}to{transform:perspective(400px) rotateY(0deg);opacity:1}}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}@keyframes skeleton{0%{opacity:.6}50%{opacity:1}to{opacity:.6}}@keyframes progress{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}@keyframes progressIndeterminate{0%{left:-40%;right:100%}60%{left:100%;right:-10%}to{left:100%;right:-10%}}@keyframes glow{0%,to{box-shadow:0 0 5px rgba(109,148,197,.5)}50%{box-shadow:0 0 20px rgba(109,148,197,.8)}}@keyframes toastSlideIn{0%{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes toastSlideOut{0%{transform:translateX(0);opacity:1}to{transform:translateX(100%);opacity:0}}@keyframes modalBackdropFadeIn{0%{opacity:0}to{opacity:1}}@keyframes modalSlideUp{0%{opacity:0;transform:translateY(50px)}to{opacity:1;transform:translateY(0)}}.animate-fadeIn{animation:fadeIn .3s ease-in-out}.animate-fadeOut{animation:fadeOut .3s ease-in-out}.animate-fadeInUp{animation:fadeInUp .4s ease-out}.animate-fadeInDown{animation:fadeInDown .4s ease-out}.animate-fadeInLeft{animation:fadeInLeft .4s ease-out}.animate-fadeInRight{animation:fadeInRight .4s ease-out}.animate-slideInUp{animation:slideInUp .4s ease-out}.animate-slideInDown{animation:slideInDown .4s ease-out}.animate-slideInLeft{animation:slideInLeft .4s ease-out}.animate-slideInRight{animation:slideInRight .4s ease-out}.animate-slideOutUp{animation:slideOutUp .3s ease-in}.animate-slideOutDown{animation:slideOutDown .3s ease-in}.animate-scaleIn{animation:scaleIn .3s ease-out}.animate-scaleOut{animation:scaleOut .3s ease-in}.animate-scaleUp{animation:scaleUp .3s ease-out}.animate-zoomIn{animation:zoomIn .4s ease-out}.animate-zoomOut{animation:zoomOut .3s ease-in}.animate-bounce{animation:bounce 1s infinite}.animate-bounceIn{animation:bounceIn .6s ease-out}.animate-bounceOut{animation:bounceOut .5s ease-in}.animate-shake{animation:shake .5s ease-in-out}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.animate-pulseScale{animation:pulseScale 2s ease-in-out infinite}.animate-pulseRing{animation:pulseRing 1.5s cubic-bezier(0,0,.2,1) infinite}.animate-spin{animation:rotate 1s linear infinite}.animate-spin-slow{animation:rotate 3s linear infinite}.animate-rotateIn{animation:rotateIn .6s ease-out}.animate-flipInX{animation:flipInX .6s ease-out}.animate-flipInY{animation:flipInY .6s ease-out}.animate-shimmer{animation:shimmer 2s linear infinite;background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,255,255,.3) 50%,rgba(255,255,255,0));background-size:1000px 100%}.animate-skeleton{animation:skeleton 1.5s ease-in-out infinite}.animate-progress{animation:progress 1.5s ease-in-out infinite}.animate-progressIndeterminate{animation:progressIndeterminate 2s cubic-bezier(.65,.815,.735,.395) infinite}.animate-glow{animation:glow 2s ease-in-out infinite}.animate-toastSlideIn{animation:toastSlideIn .3s ease-out}.animate-toastSlideOut{animation:toastSlideOut .3s ease-in}.animate-modalBackdropFadeIn{animation:modalBackdropFadeIn .2s ease-out}.animate-modalSlideUp{animation:modalSlideUp .3s ease-out}.animation-delay-75{animation-delay:75ms}.animation-delay-100{animation-delay:.1s}.animation-delay-150{animation-delay:.15s}.animation-delay-200{animation-delay:.2s}.animation-delay-300{animation-delay:.3s}.animation-delay-500{animation-delay:.5s}.animation-delay-700{animation-delay:.7s}.animation-delay-1000{animation-delay:1s}.animation-duration-75{animation-duration:75ms}.animation-duration-100{animation-duration:.1s}.animation-duration-150{animation-duration:.15s}.animation-duration-200{animation-duration:.2s}.animation-duration-300{animation-duration:.3s}.animation-duration-500{animation-duration:.5s}.animation-duration-700{animation-duration:.7s}.animation-duration-1000{animation-duration:1s}.transition-smooth{transition:all .2s cubic-bezier(.4,0,.2,1)}.transition-bounce{transition:all .3s cubic-bezier(.68,-.55,.265,1.55)}.transition-transform{transition:transform .2s cubic-bezier(.4,0,.2,1)}.transition-colors{transition:color .2s cubic-bezier(.4,0,.2,1),background-color .2s cubic-bezier(.4,0,.2,1),border-color .2s cubic-bezier(.4,0,.2,1)}.transition-opacity{transition:opacity .2s cubic-bezier(.4,0,.2,1)}.hover-lift{transition:transform .2s ease,box-shadow .2s ease}.hover-lift:hover{transform:translateY(-4px);box-shadow:0 10px 20px rgba(0,0,0,.1)}.hover-scale{transition:transform .2s ease}.hover-scale:hover{transform:scale(1.05)}.hover-brightness{transition:filter .2s ease}.hover-brightness:hover{filter:brightness(1.1)}.hover-grow{transition:transform .2s cubic-bezier(.68,-.55,.265,1.55)}.hover-grow:hover{transform:scale(1.1)}.skeleton{background:linear-gradient(90deg,#f0f0f0,#e0e0e0 50%,#f0f0f0);background-size:200% 100%}.skeleton,.skeleton-dark{animation:shimmer 1.5s ease-in-out infinite;border-radius:4px}.skeleton-dark{background:linear-gradient(90deg,#2d3748,#1a202c 50%,#2d3748);background-size:200% 100%}.focus-ring{transition:box-shadow .2s ease}.focus-ring:focus{outline:none;box-shadow:0 0 0 3px rgba(109,148,197,.3)}.focus-ring-success:focus{box-shadow:0 0 0 3px rgba(16,185,129,.3)}.focus-ring-danger:focus{box-shadow:0 0 0 3px rgba(239,68,68,.3)}.stagger-item{opacity:0;animation:fadeInUp .4s ease-out forwards}.stagger-item:first-child{animation-delay:0s}.stagger-item:nth-child(2){animation-delay:50ms}.stagger-item:nth-child(3){animation-delay:.1s}.stagger-item:nth-child(4){animation-delay:.15s}.stagger-item:nth-child(5){animation-delay:.2s}.stagger-item:nth-child(6){animation-delay:.25s}.stagger-item:nth-child(7){animation-delay:.3s}.stagger-item:nth-child(8){animation-delay:.35s}.stagger-item:nth-child(9){animation-delay:.4s}.stagger-item:nth-child(10){animation-delay:.45s}.page-enter{opacity:0;transform:translateY(20px)}.page-enter-active{transition:opacity .3s ease,transform .3s ease}.page-enter-active,.page-exit{opacity:1;transform:translateY(0)}.page-exit-active{opacity:0;transform:translateY(-20px);transition:opacity .3s ease,transform .3s ease}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.will-change-transform{will-change:transform}.will-change-opacity{will-change:opacity}.will-change-auto{will-change:auto}.gpu-accelerated{transform:translateZ(0);backface-visibility:hidden;perspective:1000px}@media print{*{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;color-adjust:exact!important}@page{size:A4 portrait;margin:15mm}@page :first{margin-top:20mm}body,html{width:210mm;height:297mm;margin:0;padding:0;font-size:12pt;line-height:1.4;color:#000000;background:#ffffff}body{font-family:Inter,Arial,sans-serif}.action-buttons,.btn,.button,.controls,.footer,.header,.hide-print,.navbar,.navigation,.no-print,.print-hidden,.sidebar,.toolbar,aside,button,footer,form:not(.print-form),header,input:not(.print-input),input[type=button],input[type=reset],input[type=submit],nav,select:not(.print-select),textarea:not(.print-textarea){display:none!important}.print-only,.show-print{display:block!important}.print-inline{display:inline!important}.print-flex{display:flex!important}.new-page,.page-break-before{page-break-before:always;-moz-column-break-before:page;break-before:page}.page-break-after{page-break-after:always;-moz-column-break-after:page;break-after:page}.barcode-container,.keep-together,.page-break-avoid,.patient-card,.section-header,figure,h1,h2,h3,h4,h5,h6,img,table{page-break-inside:avoid;-moz-column-break-inside:avoid;break-inside:avoid}h1,h2,h3,h4,h5,h6{page-break-after:avoid;-moz-column-break-after:avoid;break-after:avoid}h1{font-size:24pt;font-weight:700;margin:0 0 12pt;color:#111827}h2{font-size:20pt;margin:10pt 0 8pt;color:#1f2937}h2,h3{font-weight:600}h3{font-size:16pt;margin:8pt 0 6pt;color:#374151}h4{font-size:14pt;font-weight:600;margin:6pt 0 4pt;color:#4b5563}p{margin:0 0 8pt;orphans:3;widows:3}.patient-card{width:100%;max-width:180mm;margin:0 auto 20mm;padding:10mm;border:2pt solid #6d94c5;border-radius:4pt;background:#ffffff;box-shadow:none}.patient-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8mm;padding-bottom:4mm;border-bottom:1pt solid #e5e7eb}.patient-card-logo{max-width:40mm;height:auto}.patient-card-title{font-size:18pt;font-weight:700;color:#6d94c5;text-align:center}.patient-photo{width:35mm;height:45mm;-o-object-fit:cover;object-fit:cover;border:1pt solid #d1d5db;border-radius:2pt}.patient-info{margin:6mm 0}.patient-info-row{display:flex;margin-bottom:3mm;page-break-inside:avoid}.patient-info-label{font-weight:600;min-width:40mm;color:#374151}.patient-info-value{flex:1;color:#111827}.patient-id{font-size:14pt;font-weight:700;color:#6d94c5;letter-spacing:.5pt}.barcode-container{width:100%;max-width:100mm;margin:10mm auto;padding:5mm;text-align:center;border:1pt solid #e5e7eb;border-radius:2pt;background:#ffffff}.barcode-image{width:100%;max-width:90mm;height:auto;margin:0 auto}.barcode-label{margin-top:3mm;font-size:10pt;font-weight:600;color:#374151;text-align:center;letter-spacing:1pt}.barcode-print-section{page-break-before:always;padding:10mm}.report-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10mm;padding-bottom:5mm;border-bottom:2pt solid #6d94c5}.report-title{font-size:20pt;font-weight:700;color:#111827}.report-date{font-size:10pt;color:#6b7280}.report-section{margin-bottom:8mm;page-break-inside:avoid}.report-section-title{font-size:14pt;font-weight:600;margin-bottom:4mm;padding-bottom:2mm;border-bottom:1pt solid #e5e7eb;color:#1f2937}table{width:100%;border-collapse:collapse;margin:4mm 0 8mm;font-size:10pt}thead{display:table-header-group}tbody{display:table-row-group}tfoot{display:table-footer-group}th{padding:3mm 2mm;text-align:left;font-weight:600;color:#111827;background:#f3f4f6;border:1pt solid #d1d5db}td{padding:2.5mm 2mm;border:1pt solid #e5e7eb;color:#374151}tr{page-break-inside:avoid}tbody tr:nth-child(2n){background:#f9fafb}ol,ul{margin:0 0 8pt;padding-left:8mm}li{margin-bottom:2pt;page-break-inside:avoid}.print-container{width:100%;max-width:180mm;margin:0 auto}.print-row{display:flex;margin-bottom:5mm;page-break-inside:avoid}.print-col{flex:1;padding:0 2mm}.print-col-half{flex:0 0 50%;padding:0 2mm}.print-col-third{flex:0 0 33.333%;padding:0 2mm}.print-mt-small{margin-top:3mm!important}.print-mt-medium{margin-top:6mm!important}.print-mt-large{margin-top:10mm!important}.print-mb-small{margin-bottom:3mm!important}.print-mb-medium{margin-bottom:6mm!important}.print-mb-large{margin-bottom:10mm!important}.print-border{border:1pt solid #d1d5db!important}.print-border-primary{border:2pt solid #6d94c5!important}.print-bg-gray{background:#f9fafb!important}.print-text-left{text-align:left!important}.print-text-center{text-align:center!important}.print-text-right{text-align:right!important}.clinic-logo{max-width:50mm;height:auto;margin-bottom:5mm}.clinic-name{font-size:18pt;font-weight:700;color:#6d94c5;margin-bottom:2mm}.clinic-address{font-size:9pt;color:#6b7280;line-height:1.4}.clinic-contact{font-size:9pt;color:#6b7280;margin-top:2mm}.print-footer{display:block!important;position:fixed;bottom:0;left:0;right:0;padding:3mm 15mm;font-size:8pt;color:#9ca3af;text-align:center;border-top:.5pt solid #e5e7eb}.print-footer-left{float:left}.print-footer-center{display:inline-block}.print-footer-right{float:right}.qr-code{width:30mm;height:30mm;margin:3mm auto}.signature-section{margin-top:15mm;page-break-inside:avoid}.signature-line{width:50mm;border-top:1pt solid #111827;margin:10mm 0 2mm}.signature-label{font-size:9pt;color:#6b7280}.print-watermark{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-45deg);font-size:48pt;font-weight:700;color:rgba(0,0,0,.05);z-index:-1;pointer-events:none}*{box-shadow:none!important;text-shadow:none!important;transition:none!important;animation:none!important}a{color:#111827;text-decoration:none}a[href^=http]:after{content:" (" attr(href) ")";font-size:8pt;color:#6b7280}abbr[title]:after{content:" (" attr(title) ")";font-size:8pt;color:#6b7280}img{max-width:100%;height:auto;page-break-inside:avoid}.receipt{width:100%;max-width:180mm;margin:0 auto;padding:10mm;border:2pt solid #6d94c5}.receipt-header{text-align:center;margin-bottom:8mm;padding-bottom:4mm;border-bottom:1pt solid #e5e7eb}.receipt-number{font-size:14pt;font-weight:700;color:#6d94c5}.receipt-items{margin:6mm 0}.receipt-total{margin-top:6mm;padding-top:4mm;border-top:2pt solid #111827;font-size:14pt;font-weight:700}.prescription{width:100%;max-width:180mm;margin:0 auto;padding:10mm}.prescription-rx{font-size:24pt;font-weight:700;color:#6d94c5;margin-bottom:8mm}.prescription-item{margin-bottom:6mm;padding:4mm;border:1pt solid #e5e7eb;border-radius:2pt;page-break-inside:avoid}.medicine-name{font-size:12pt;font-weight:600;color:#111827}.medicine-dosage{font-size:10pt;color:#6b7280;margin-top:2mm}.test-report{width:100%;max-width:180mm;margin:0 auto}.test-result{margin-bottom:4mm;padding:3mm;border-bottom:.5pt solid #e5e7eb;page-break-inside:avoid}.test-name{font-weight:600;color:#111827}.test-value{font-weight:700;color:#6d94c5}.test-reference{font-size:9pt;color:#6b7280}.test-abnormal{color:#ef4444!important;font-weight:700}}body.print-preview{background:#f0f0f0;padding:20px}body.print-preview .print-page{width:210mm;min-height:297mm;padding:15mm;margin:0 auto 20px;background:white;box-shadow:0 0 10px rgba(0,0,0,.1)}