:root{--color-bg: #f6f5f1;--color-surface: #ffffff;--color-surface-alt: #eef1ef;--color-ink: #1c2624;--color-ink-soft: #5b6663;--color-border: #dcdcd5;--color-accent: #1f6f64;--color-accent-soft: #e3efed;--color-accent-dark: #154f47;--color-warn: #b4581f;--color-warn-soft: #fbeee3;--color-danger: #a33636;--color-danger-soft: #f8e9e9;--color-success: #2f7a4f;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--shadow-card: 0 1px 2px rgba(28, 38, 36, .06), 0 4px 16px rgba(28, 38, 36, .05);--font-display: "Sarabun", "Noto Sans Thai", sans-serif;--font-body: "Sarabun", "Noto Sans Thai", sans-serif}*{box-sizing:border-box}html,body,#root{background:var(--color-bg)}body{font-family:var(--font-body);font-size:16px;line-height:1.55;color:var(--color-ink)}h1,h2,h3,h4{font-family:var(--font-display);font-weight:600;margin:0 0 .4em;letter-spacing:.01em}a{color:var(--color-accent-dark)}button,input,select,textarea{font-family:inherit;font-size:1rem}.app-shell{min-height:100vh;display:flex;flex-direction:column}.topbar{background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:.85rem 1.25rem;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:20}.topbar-brand{display:flex;align-items:center;gap:.6rem;font-weight:600;color:var(--color-accent-dark)}.topbar-mark{width:30px;height:30px;border-radius:8px;background:var(--color-accent);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:.95rem}.main-container{max-width:980px;width:100%;margin:0 auto;padding:1.5rem 1.25rem 4rem;flex:1}.main-container.narrow{max-width:620px}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:1.5rem;margin-bottom:1.25rem}.card-header{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:1rem}.card-header h2,.card-header h3{margin:0}.section-label{font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;color:var(--color-ink-soft);font-weight:600}.field{margin-bottom:1.1rem}.field label.field-label{display:block;font-weight:500;margin-bottom:.4rem;color:var(--color-ink)}.field .hint{font-size:.85rem;color:var(--color-ink-soft);margin-top:.3rem}input[type=text],input[type=date],input[type=password],input[type=number],input[type=tel],select,textarea{width:100%;padding:.7rem .85rem;border:1.5px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-ink);transition:border-color .15s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft)}.form-row{display:flex;gap:1rem;flex-wrap:wrap}.form-row>.field{flex:1;min-width:180px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.7rem 1.3rem;border-radius:var(--radius-md);border:1.5px solid transparent;font-weight:600;cursor:pointer;transition:filter .12s,transform .05s;min-height:46px}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-accent);color:#fff}.btn-primary:hover:not(:disabled){filter:brightness(1.07)}.btn-secondary{background:var(--color-surface);border-color:var(--color-border);color:var(--color-ink)}.btn-secondary:hover:not(:disabled){background:var(--color-surface-alt)}.btn-outline{background:transparent;border-color:var(--color-accent);color:var(--color-accent-dark)}.btn-danger{background:transparent;border-color:var(--color-danger);color:var(--color-danger)}.btn-danger:hover:not(:disabled){background:var(--color-danger-soft)}.btn-block{width:100%}.btn-sm{padding:.45rem .9rem;min-height:36px;font-size:.9rem}.badge{display:inline-flex;align-items:center;padding:.2rem .65rem;border-radius:999px;font-size:.78rem;font-weight:600;background:var(--color-accent-soft);color:var(--color-accent-dark)}.badge.warn{background:var(--color-warn-soft);color:var(--color-warn)}.badge.muted{background:var(--color-surface-alt);color:var(--color-ink-soft)}.likert-group{display:flex;flex-direction:column;gap:.5rem}.likert-option{display:flex;align-items:center;gap:.7rem;padding:.65rem .85rem;border:1.5px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:border-color .12s,background .12s}.likert-option:hover{background:var(--color-surface-alt)}.likert-option.selected{border-color:var(--color-accent);background:var(--color-accent-soft)}.likert-option input{width:18px;height:18px;accent-color:var(--color-accent);flex-shrink:0}.vas-scale{display:grid;grid-template-columns:repeat(11,1fr);gap:.35rem}.vas-scale button{aspect-ratio:1;border-radius:50%;border:1.5px solid var(--color-border);background:var(--color-surface);font-weight:600;cursor:pointer;color:var(--color-ink)}.vas-scale button.selected{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.vas-labels{display:flex;justify-content:space-between;font-size:.8rem;color:var(--color-ink-soft);margin-top:.4rem}table.data-table{width:100%;border-collapse:collapse}table.data-table th,table.data-table td{text-align:left;padding:.6rem .7rem;border-bottom:1px solid var(--color-border);font-size:.92rem}table.data-table th{color:var(--color-ink-soft);font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em}table.data-table tr:hover td{background:var(--color-surface-alt)}.patient-shell{min-height:100vh;background:var(--color-bg);display:flex;flex-direction:column}.patient-header{background:var(--color-accent-dark);color:#fff;padding:1.5rem 1.25rem;text-align:center}.patient-header .clinic-name{font-size:.85rem;opacity:.85;margin-bottom:.2rem}.patient-header .patient-name{font-size:1.3rem;font-weight:700}.progress-track{height:6px;background:var(--color-surface-alt);border-radius:999px;overflow:hidden;margin:1rem 0 1.5rem}.progress-fill{height:100%;background:var(--color-accent);transition:width .3s}.alert{padding:.9rem 1.1rem;border-radius:var(--radius-md);margin-bottom:1rem;font-size:.92rem}.alert-error{background:var(--color-danger-soft);color:var(--color-danger)}.alert-success{background:var(--color-accent-soft);color:var(--color-accent-dark)}.alert-warn{background:var(--color-warn-soft);color:var(--color-warn)}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,var(--color-accent-dark) 0%,var(--color-accent) 55%,var(--color-bg) 55%);padding:1.5rem}.login-card{width:100%;max-width:400px;background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:0 8px 32px #0000002e;padding:2rem 1.75rem}.flex-between{display:flex;align-items:center;justify-content:space-between;gap:1rem}.muted{color:var(--color-ink-soft)}.mt-1{margin-top:.5rem}.mt-2{margin-top:1rem}.mt-3{margin-top:1.5rem}.mb-1{margin-bottom:.5rem}.mb-2{margin-bottom:1rem}.mb-3{margin-bottom:1.5rem}.text-center{text-align:center}.divider{height:1px;background:var(--color-border);margin:1.25rem 0;border:none}.loading-spinner{width:28px;height:28px;border:3px solid var(--color-accent-soft);border-top-color:var(--color-accent);border-radius:50%;animation:spin .7s linear infinite;margin:2rem auto}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}@media (max-width: 560px){.main-container{padding:1rem .9rem 3rem}.card{padding:1.1rem;border-radius:var(--radius-md)}.vas-scale{grid-template-columns:repeat(6,1fr)}}
