@font-face{font-family:Vazirmatn;src:url('/patient/fonts/vazirmatn-arabic.woff2') format('woff2');font-display:swap;unicode-range:U+0600-06FF,U+0750-077F,U+08A0-08FF,U+FB50-FDFF,U+FE70-FEFF}
@font-face{font-family:Vazirmatn;src:url('/patient/fonts/vazirmatn-latin.woff2') format('woff2');font-display:swap}
:root{--ink:#183337;--muted:#6c7e81;--teal:#155f63;--teal-2:#26777a;--mint:#e9f4f1;--line:#dce7e7;--paper:#fff;--bg:#f4f7f7;--danger:#a53c3c;--shadow:0 18px 50px rgba(19,65,68,.10)}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Vazirmatn,Tahoma,sans-serif;line-height:1.75}button,input{font:inherit}button{cursor:pointer}.loading{min-height:100vh;display:grid;place-content:center;text-align:center;color:var(--muted)}.spinner{width:42px;height:42px;border:4px solid var(--line);border-top-color:var(--teal);border-radius:50%;animation:spin .8s linear infinite;margin:auto}@keyframes spin{to{transform:rotate(360deg)}}
.auth-shell{min-height:100vh;display:grid;grid-template-columns:minmax(320px,500px) minmax(300px,1fr);background:linear-gradient(135deg,#edf6f4,#f8faf9)}.auth-panel{padding:clamp(28px,6vw,80px);display:flex;flex-direction:column;justify-content:center;background:#fff}.auth-art{padding:64px;display:flex;align-items:flex-end;background:linear-gradient(145deg,#0f555a,#317f80);color:#fff;position:relative;overflow:hidden}.auth-art:before,.auth-art:after{content:"";position:absolute;border:1px solid rgba(255,255,255,.15);border-radius:50%}.auth-art:before{width:420px;height:420px;top:-160px;left:-100px}.auth-art:after{width:230px;height:230px;top:80px;right:-90px}.auth-art>div{position:relative;max-width:600px}.auth-art h1{font-size:clamp(34px,5vw,68px);line-height:1.2;margin:0 0 18px}.auth-art p{font-size:18px;opacity:.86}.brand{display:flex;align-items:center;gap:14px;margin-bottom:50px}.brand-mark{width:58px;height:58px;border-radius:18px;background:var(--mint);display:grid;place-items:center;color:var(--teal);font-size:26px;font-weight:800;overflow:hidden}.brand-mark img{width:100%;height:100%;object-fit:contain}.brand strong{display:block;font-size:20px}.brand small{color:var(--muted)}.auth-card h2{font-size:30px;margin:0 0 6px}.auth-card>p{color:var(--muted);margin:0 0 26px}.field{display:grid;gap:7px;margin:16px 0}.field label{font-weight:700;font-size:14px}.field input{width:100%;border:1px solid var(--line);border-radius:14px;padding:14px 16px;background:#fbfdfd;color:var(--ink);outline:none}.field input:focus{border-color:var(--teal);box-shadow:0 0 0 4px rgba(21,95,99,.09)}.btn{border:0;border-radius:14px;padding:13px 19px;background:var(--teal);color:#fff;font-weight:700}.btn:hover{background:var(--teal-2)}.btn.secondary{background:#edf4f3;color:var(--teal)}.btn.full{width:100%;margin-top:12px}.auth-note{font-size:13px;color:var(--muted);margin-top:20px}.alert{padding:12px 15px;border-radius:12px;background:#fff1f1;color:var(--danger);margin-bottom:14px}
.portal-head{position:sticky;top:0;z-index:5;background:rgba(255,255,255,.92);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.portal-head>div{max-width:1180px;margin:auto;padding:15px 22px;display:flex;align-items:center;justify-content:space-between;gap:18px}.portal-head .brand{margin:0}.head-actions{display:flex;align-items:center;gap:10px}.head-user{color:var(--muted);font-size:14px}.shell{max-width:1180px;margin:0 auto;padding:30px 22px 70px}.hero{background:linear-gradient(135deg,#155f63,#367f80);color:#fff;border-radius:28px;padding:clamp(24px,5vw,44px);box-shadow:var(--shadow);display:flex;align-items:center;justify-content:space-between;gap:25px}.hero small{opacity:.82}.hero h1{font-size:clamp(28px,5vw,46px);margin:5px 0}.appointment{min-width:260px;padding:20px;border-radius:20px;background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.18)}.appointment strong{display:block;font-size:20px}.appointment p{margin:4px 0 0}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:20px 0}.stat,.card{background:var(--paper);border:1px solid var(--line);border-radius:20px;box-shadow:0 10px 30px rgba(30,72,74,.05)}.stat{padding:20px}.stat span{display:block;color:var(--muted);font-size:14px}.stat strong{display:block;font-size:25px;margin-top:3px}.tabs{display:flex;gap:8px;overflow:auto;padding:5px 0 16px;scrollbar-width:thin}.tabs button{white-space:nowrap;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:999px;padding:10px 17px}.tabs button.active{background:var(--teal);border-color:var(--teal);color:#fff}.card{padding:24px;margin-bottom:18px}.card h2{font-size:21px;margin:0 0 16px}.grid{display:grid;grid-template-columns:1.4fr 1fr;gap:18px}.row{display:flex;justify-content:space-between;gap:18px;padding:14px 0;border-bottom:1px solid var(--line)}.row:last-child{border-bottom:0}.muted{color:var(--muted)}.empty{text-align:center;padding:32px;color:var(--muted);background:#f8fbfa;border-radius:14px}.privacy{background:#eef7f2;border:1px solid #cee4d8;color:#315d4b;border-radius:16px;padding:16px 18px}.privacy strong{display:block;margin-bottom:4px}.privacy p{margin:0;font-size:14px}.treatment{border:1px solid var(--line);border-radius:16px;padding:18px;margin:12px 0}.treatment-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.treatment h3{margin:0}.pill{display:inline-block;padding:4px 10px;border-radius:999px;background:var(--mint);color:var(--teal);font-size:12px}.visits{margin-top:14px;padding-top:10px;border-top:1px dashed var(--line)}.visit{display:grid;grid-template-columns:120px 1fr;gap:15px;padding:10px 0}.visit ul{margin:0;padding-right:20px}.rx{border:1px solid var(--line);border-radius:16px;margin:12px 0;overflow:hidden}.rx summary{padding:17px;cursor:pointer;font-weight:700}.rx-body{padding:0 17px 17px}.rx-line{padding:12px 0;border-top:1px solid var(--line)}.void{color:var(--danger)}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:560px}th,td{text-align:right;padding:12px;border-bottom:1px solid var(--line)}th{font-size:13px;color:var(--muted)}.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.gallery figure{margin:0;border:1px solid var(--line);border-radius:15px;overflow:hidden;background:#fff}.gallery img{width:100%;height:190px;display:block;object-fit:cover}.gallery figcaption{padding:10px 12px;font-size:13px}.clinic-contact p{margin:7px 0}.portal-foot{text-align:center;color:var(--muted);font-size:13px;padding-top:20px}#patientToast{position:fixed;left:22px;bottom:22px;z-index:20;background:#173d40;color:#fff;border-radius:12px;padding:12px 18px;box-shadow:var(--shadow);opacity:0;transform:translateY(10px);pointer-events:none;transition:.2s}#patientToast.show{opacity:1;transform:none}
@media(max-width:820px){.auth-shell{display:block}.auth-art{display:none}.auth-panel{min-height:100vh}.portal-head .head-user{display:none}.hero{display:block}.appointment{min-width:0;margin-top:20px}.stats{grid-template-columns:1fr}.grid{grid-template-columns:1fr}.gallery{grid-template-columns:repeat(2,1fr)}}
@media(max-width:480px){.portal-head>div,.shell{padding-left:14px;padding-right:14px}.brand small{display:none}.hero{border-radius:20px}.card{padding:18px}.visit{grid-template-columns:1fr}.gallery{grid-template-columns:1fr}.head-actions .btn{padding:9px 12px}}
@media print{.portal-head,.tabs,.btn,#patientToast{display:none!important}.shell{max-width:none;padding:0}.hero{box-shadow:none}.tab-panel{display:block!important}.card{box-shadow:none;break-inside:avoid}}

body{background:#f5f8fb;color:#19314d}.portal-head{background:#fff;border-bottom:1px solid #e3eaf1}.hero{border-radius:24px;background:linear-gradient(110deg,#dff5ef,#e5f1fc);color:#174e55;border:1px solid #d4e7e6;box-shadow:none}.hero h1{font-size:29px;line-height:1.6}.card,.stat{border:1px solid #e0e9f0;border-radius:18px;box-shadow:0 6px 20px #18345107}.btn{background:#128c89;border-radius:12px;min-height:44px}.btn.secondary{background:#eef6f7;color:#177c85;border-color:#d9e8ec}.tabs{background:#fff;border:1px solid #dfe9ef;border-radius:16px;padding:7px;gap:6px;overflow:auto;flex-wrap:nowrap}.tabs button{min-width:76px;min-height:45px;border-radius:10px;white-space:nowrap}.tabs button.active{background:#e1f4ee;color:#146c68}.brand-mark{background:#e2f6ef;color:#14736a}.patient-chat-thread{height:340px;max-height:44vh;overflow:auto;background:#f1f6f9;border-radius:17px;padding:16px;display:flex;flex-direction:column;gap:12px;margin:16px 0}.patient-bubble{align-self:flex-end;max-width:85%;border-radius:15px;background:#daf1e8;color:#1b4d45;padding:12px 16px}.patient-bubble.clinic{align-self:flex-start;background:#fff;border:1px solid #e0e9ee;color:#22374a}.patient-bubble p{white-space:pre-wrap;overflow-wrap:anywhere;margin:6px 0}.patient-bubble small,.patient-bubble time{font-size:11px;color:#617d82}#patientChatText{width:100%;min-height:80px;border:1px solid #cfdfe6;border-radius:12px;padding:12px;margin:8px 0;resize:vertical}.patient-chat .card-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.auth-art{background:linear-gradient(155deg,#146b77,#1b3c61)}@media(max-width:640px){.shell{padding:15px 14px 95px}.hero{padding:20px;display:block}.hero h1{font-size:25px}.hero .appointment-box{margin-top:16px}.tabs{position:sticky;top:8px;z-index:10}.tabs button{padding:10px 12px;font-size:13px;min-width:64px}.stats{gap:10px}.stat{padding:15px}.stat strong{font-size:19px}.portal-head>div{padding:12px 14px}.patient-chat .card-head{display:block}.patient-chat .card-head button{margin-top:10px}.card{padding:18px}.patient-bubble{max-width:94%}.portal-foot{font-size:12px}.brand strong{font-size:16px}}
