:root{color-scheme:light;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background-color:#f4f5fb;color:#101623}*{box-sizing:border-box}body{margin:0;background:#f4f5fb}.main,body{min-height:100vh}.main{display:flex;padding:3.5rem 4rem;background:radial-gradient(circle at top left,#fff 0,#eef2ff 40%,#dbeafe 100%)}.container{width:min(1240px,100%);margin:0 auto;display:flex;flex-direction:column;gap:2.5rem}.header{justify-content:space-between;gap:1.75rem}.header,.headerActions{display:flex;flex-wrap:wrap;align-items:center}.headerActions{gap:.9rem;justify-content:flex-end}.header h1{margin:0;font-size:clamp(2.25rem,4vw,3.25rem);font-weight:600;letter-spacing:-.03em}.subtitle{margin:.75rem 0 0;font-size:1.05rem;color:#475569;max-width:60ch;line-height:1.6}.panel{background:hsla(0,0%,100%,.97);border-radius:30px;padding:3rem;box-shadow:0 28px 55px -45px rgba(15,23,42,.55);border:1px solid rgba(226,232,240,.8)}.panelContent{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);grid-gap:3rem;gap:3rem;align-items:start}.uploadColumn{gap:1.75rem}.uploadColumn,.uploadZone{display:flex;flex-direction:column}.uploadZone{border:1.5px dashed rgba(148,163,184,.85);border-radius:26px;padding:2.75rem 2.25rem;align-items:center;gap:1.35rem;text-align:center;cursor:pointer;transition:border-color .16s ease,background-color .16s ease,transform .16s ease,box-shadow .16s ease;background:rgba(248,250,252,.72)}.uploadZone:focus-within,.uploadZone:hover{border-color:#2563eb;background:rgba(37,99,235,.08);transform:translateY(-2px);box-shadow:0 15px 30px -28px rgba(37,99,235,.8)}.uploadZone h2{margin:0;font-size:1.4rem;font-weight:600}.uploadHint{margin:0;font-size:.98rem;color:#64748b;max-width:38ch;line-height:1.6}.uploadButton{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:999px;background:linear-gradient(120deg,#2563eb,#7c3aed);color:#fff;font-weight:600;font-size:.98rem;padding:.95rem 2.4rem;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,opacity .15s ease;box-shadow:0 20px 36px -24px rgba(79,70,229,.9)}.uploadButton:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 26px 46px -26px rgba(79,70,229,.85)}.uploadButton:disabled{cursor:not-allowed;opacity:.65}.hiddenInput{position:absolute;opacity:0;pointer-events:none}.fileMeta{display:flex;gap:1.2rem;align-items:center;justify-content:space-between;flex-wrap:wrap;border:1px solid rgba(226,232,240,.95);border-radius:20px;padding:1.15rem 1.4rem;background:rgba(248,250,252,.92)}.fileMeta h3{margin:0;font-size:1.05rem;font-weight:600}.fileMeta span{color:#64748b;font-size:.92rem}.jobSummary{display:flex;flex-direction:column;gap:1.25rem}.errorText{color:#dc2626;font-size:.97rem;text-align:center;background:hsla(0,91%,71%,.12);border:1px solid hsla(0,91%,71%,.35);border-radius:16px;padding:.85rem 1rem}.summaryCard{border-radius:22px;padding:1.75rem;background:linear-gradient(135deg,rgba(248,250,252,.85),rgba(224,231,255,.7));border:1px solid rgba(226,232,240,.9);display:flex;flex-direction:column;gap:1.35rem}.promptSummaryCard{gap:1.1rem}.promptHelper{margin:0;font-size:.94rem;color:#334155;line-height:1.6}.previewList{margin:0;padding-left:1.25rem;display:flex;flex-direction:column;gap:.4rem;font-size:.9rem;color:#334155}.promptTextarea{width:100%;resize:vertical;min-height:5rem;border-radius:16px;border:1px solid rgba(148,163,184,.45);padding:.85rem 1rem;font-family:inherit;font-size:.95rem;line-height:1.6;background:#fff;transition:border-color .16s ease,box-shadow .16s ease,background-color .16s ease;color:#0f172a}.promptTextarea:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.12);background:#fff}.promptTextarea:disabled{background:rgba(241,245,249,.65);cursor:not-allowed;opacity:.75}.promptHint{margin:0;font-size:.85rem;color:#64748b;line-height:1.5}.promptCurrent{border:1px solid rgba(148,163,184,.35);border-radius:12px;padding:.75rem .85rem;background:rgba(241,245,249,.65);display:flex;flex-direction:column;gap:.5rem}.promptCurrentLabel{margin:0;font-size:.85rem;font-weight:600;color:#1f2937}.promptCurrentText{margin:0;font-family:JetBrains Mono,SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.82rem;line-height:1.55;white-space:pre-wrap;word-break:break-word;color:#0f172a}.promptFeedback{color:#166534;background:rgba(34,197,94,.18);border:1px solid rgba(34,197,94,.3);border-radius:12px}.promptError,.promptFeedback{margin:0;font-size:.9rem;padding:.65rem .85rem}.promptError{color:#b91c1c;background:hsla(0,91%,71%,.12);border:1px solid hsla(0,91%,71%,.26);border-radius:12px}.promptActions{display:flex;gap:.75rem;align-items:center;justify-content:flex-end;flex-wrap:wrap}.promptSaveButton{background:linear-gradient(120deg,#2563eb,#7c3aed);color:#fff;box-shadow:0 20px 32px -26px rgba(79,70,229,.9)}.promptSaveButton:hover:not(:disabled){background:linear-gradient(120deg,#1d4ed8,#6d28d9);box-shadow:0 24px 40px -30px rgba(79,70,229,.95)}.promptSaveButton:disabled{opacity:.65;cursor:not-allowed;box-shadow:none}.summaryHeader{display:flex;align-items:center;justify-content:space-between;gap:1.5rem}.statusBadge{display:inline-flex;align-items:center;justify-content:center;padding:.35rem .85rem;border-radius:999px;font-size:.85rem;font-weight:600;letter-spacing:.01em;color:#0f172a;background:rgba(148,163,184,.25)}.status-dang-xu-ly{background:rgba(37,99,235,.18);color:#1d4ed8}.status-hoan-thanh{background:rgba(34,197,94,.2);color:#15803d}.status-loi{background:hsla(0,91%,71%,.2);color:#b91c1c}.summaryHeader h2{margin:.45rem 0 0;font-size:1.35rem;font-weight:600}.progressCount{font-size:1.1rem;font-weight:600;color:#1f2937}.progressBar{width:100%;height:12px;border-radius:999px;background:rgba(203,213,225,.6);overflow:hidden}.progressFill{display:block;height:100%;background:linear-gradient(90deg,#2563eb,#7c3aed);border-radius:inherit;transition:width .2s ease}.summaryNote{margin:0;font-size:.95rem;color:#475569;line-height:1.6}.zipButton{align-self:flex-start;text-decoration:none;font-weight:600;background:linear-gradient(135deg,#16a34a,#22c55e);color:#fff;padding:.8rem 1.6rem;border-radius:14px;box-shadow:0 20px 32px -25px rgba(22,163,74,.85);transition:transform .15s ease,box-shadow .15s ease}.zipButton:hover{transform:translateY(-1px);box-shadow:0 26px 42px -25px rgba(22,163,74,.85)}.summaryPlaceholder{border:1px dashed rgba(203,213,225,.8);border-radius:18px;padding:1.6rem 1.2rem;background:rgba(248,250,252,.72);color:#64748b;font-size:.96rem;text-align:center}.resultColumn{display:flex;flex-direction:column;gap:1.5rem}.resultTitle{margin:0;font-size:1.45rem;font-weight:600;color:#1e293b}.emptyState{text-align:center;color:#94a3b8;font-size:.97rem;padding:2.25rem 1.5rem;border:1px dashed rgba(203,213,225,.85);border-radius:20px;background:rgba(248,250,252,.75);line-height:1.6}.patientList{list-style:none;margin:0;padding:0;display:grid;grid-gap:1.5rem;gap:1.5rem}.patientCard{border-radius:22px;padding:1.6rem;background:rgba(248,250,252,.92);border:1px solid rgba(226,232,240,.9);display:flex;flex-direction:column;gap:1.1rem;box-shadow:0 16px 32px -32px rgba(15,23,42,.35)}.patientHeader{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;flex-wrap:wrap}.patientIndex{font-size:1.05rem}.patientIndex,.patientStatus{font-weight:600;color:#1f2937}.patientStatus{display:inline-flex;align-items:center;justify-content:center;padding:.3rem .75rem;border-radius:999px;font-size:.8rem;letter-spacing:.01em;background:rgba(148,163,184,.2)}.patientStatus.status-dang-xu-ly{background:rgba(37,99,235,.16);color:#1d4ed8}.patientStatus.status-thanh-cong{background:rgba(34,197,94,.2);color:#15803d}.patientStatus.status-loi{background:hsla(0,91%,71%,.2);color:#b91c1c}.downloadLink{text-decoration:none;font-weight:600;color:#2563eb;background:rgba(37,99,235,.12);padding:.55rem 1.2rem;border-radius:14px;transition:background-color .15s ease,transform .15s ease}.downloadLink:hover{background:rgba(37,99,235,.2);transform:translateY(-1px)}.patientActions{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap;justify-content:flex-end}.regenerateButton{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:14px;background:rgba(100,116,139,.16);color:#1f2937;font-weight:600;font-size:.92rem;padding:.55rem 1.2rem;cursor:pointer;transition:background-color .15s ease,transform .15s ease,opacity .15s ease}.regenerateButton:hover:not(:disabled){background:rgba(100,116,139,.26);transform:translateY(-1px)}.regenerateButton:disabled{cursor:not-allowed;opacity:.6}.patientNote{margin:0;font-size:.94rem;color:#334155;line-height:1.6}.promptEditor{display:flex;flex-direction:column;gap:.65rem;border-top:1px dashed rgba(203,213,225,.7);padding-top:1rem}.promptLabel{font-size:.94rem;font-weight:600;color:#1f2937;margin:0}.patientError{margin:0;font-size:.94rem;color:#b91c1c;background:hsla(0,91%,71%,.12);border:1px solid hsla(0,91%,71%,.25);border-radius:14px;padding:.85rem 1rem;line-height:1.6}.modelResults{display:grid;grid-gap:1.1rem;gap:1.1rem}.modelCard{border-radius:16px;padding:1.1rem 1.25rem;background:#fff;border:1px solid rgba(226,232,240,.8);box-shadow:0 12px 22px -24px rgba(15,23,42,.4)}.modelHeader{display:flex;align-items:center;justify-content:space-between;gap:1rem}.modelName{font-weight:600;color:#1f2937}.modelBadge{display:inline-flex;align-items:center;justify-content:center;padding:.25rem .7rem;border-radius:999px;font-size:.78rem;font-weight:600}.model-success{background:rgba(34,197,94,.18);color:#15803d}.model-error{background:hsla(0,91%,71%,.22);color:#b91c1c}.modelContent{margin:.85rem 0 0;font-size:.95rem;color:#1f2937;line-height:1.7;white-space:pre-line}.modelError{margin:.85rem 0 0;font-size:.94rem;color:#b91c1c;line-height:1.6}.patientLogs{display:flex;flex-direction:column;gap:.75rem;border-top:1px dashed rgba(203,213,225,.7);padding-top:1rem}.patientLogs h3{margin:0;font-size:.95rem;font-weight:600;color:#1f2937}.logList{list-style:none;margin:0;padding:0;gap:.65rem}.logItem,.logList{display:flex;flex-direction:column}.logItem{border-radius:12px;padding:.75rem .9rem;background:hsla(0,0%,100%,.85);border:1px solid rgba(226,232,240,.75);gap:.45rem;box-shadow:0 10px 18px -26px rgba(15,23,42,.5)}.logMeta{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap}.logTime{font-size:.82rem;color:#475569;font-weight:500}.logLevel{font-size:.75rem;font-weight:600;letter-spacing:.06em;padding:.3rem .65rem;border-radius:999px;text-transform:uppercase}.logLevel.log-thong-bao{background:rgba(59,130,246,.16);color:#1d4ed8}.logLevel.log-canh-bao{background:rgba(251,191,36,.22);color:#92400e}.logLevel.log-loi{background:hsla(0,91%,71%,.22);color:#b91c1c}.logMessage{font-size:.92rem;color:#1f2937;line-height:1.55}.logDetail,.logMessage{margin:0;word-break:break-word}.logDetail{font-size:.82rem;color:#475569;background:rgba(248,250,252,.92);border-radius:10px;padding:.6rem .75rem;border:1px solid rgba(226,232,240,.8);white-space:pre-wrap}@media (max-width:1180px){.main{padding:2.75rem 2.5rem}.panel{padding:2.4rem}.panelContent{grid-template-columns:1fr;gap:2.5rem}.resultColumn{order:2}}@media (max-width:640px){.main{padding:2rem 1.5rem}.panel{padding:2rem 1.6rem;border-radius:24px}.uploadZone{padding:2.2rem 1.75rem}.fileMeta{gap:.6rem}.fileMeta,.patientHeader,.summaryHeader{flex-direction:column;align-items:flex-start}}