*,*::before,*::after{box-sizing:border-box}*{margin:0;padding:0}html{line-height:1.6;text-size-adjust:100%;-webkit-text-size-adjust:100%;scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important}}body{min-height:100vh;text-rendering:optimizeSpeed;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}ul,ol{list-style:none}img,picture,video,canvas,svg{display:block;max-width:100%;height:auto}input,button,textarea,select{font:inherit;color:inherit}button{border:none;background:none;cursor:pointer;padding:0}button:disabled{cursor:not-allowed}a{color:inherit;text-decoration:none}textarea:not([rows]){min-height:10rem}:target{scroll-margin-block:5ex}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit;line-height:1.2}input,button,textarea,select{font-family:inherit;font-size:100%;line-height:1.15;margin:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type="number"]{-moz-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}dialog{border:none;padding:0}dialog::backdrop{background:rgba(0,0,0,0.5)}@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important}}hr{height:0;color:inherit;border-top-width:1px}abbr[title]{text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Consolas,'Liberation Mono',Menlo,monospace;font-size:1rem}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25rem}sup{top:-0.5rem}fieldset{border:none;padding:0}legend{padding:0}progress{vertical-align:baseline}[hidden]{display:none !important}:focus-visible{outline:2px solid currentColor;outline-offset:2px}:focus:not(:focus-visible){outline:none}@media print{*,*::before,*::after{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]::after{content:" (" attr(href) ")"}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap !important}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}/*! * lib.css — thư viện dùng chung + design token * * Nạp ngay sau reset.css,gộp thành bundle `base`. Xem docs/UI-KIT.md. * * QUY TẮC:mục §1 TOKEN bên dưới là phần DUY NHẤT được khác nhau giữa các dự * án. Toàn bộ §2–§11 phải trùng khớp từng ký tự với các dự án còn lại * (hamcau,chuyendong360,croon.land,raovat) để nâng cấp là copy được. * * Không đặt style riêng của một trang ở đây;trang nào có nét riêng thì thêm * file CSS của trang đó rồi khai vào $pageCss. */:root{--brand:#ee0e3b;--brand-600:#c40b31;--brand-700:#9d0827;--brand-dark:#7a061e;--brand-soft:#fde7eb;--brand-tint:#fdf3f5;--brand-ring:rgba(238,14,59,.15);--brand-ring-strong:rgba(238,14,59,.35);--brand-text:#c40b31;--brand-on-soft:#c40b31;--nav-active:#ffd166;--ink:#1a1a1a;--ink-2:#6b7280;--ink-3:#9ca3af;--line:#e5e7eb;--bg:#ffffff;--bg-soft:#f6f7f9;--danger:#dc2626;--danger-soft:#fef2f2;--danger-line:#fecaca;--danger-ink:#991b1b;--warning:#b45309;--warning-soft:#fff8ec;--success:#15803d;--success-soft:#e8f5ee;--muted-soft:#f1f5f9;--radius-sm:4px;--radius:6px;--radius-lg:10px;--radius-pill:999px;--shadow-sm:0 1px 2px rgba(0,0,0,.06);--shadow:0 1px 3px rgba(0,0,0,.08);--shadow-lg:0 8px 24px rgba(0,0,0,.12);--container:1240px;--gutter:20px;--header-h:60px;--step--1:.875rem;--step-0:1rem;--step-1:1.125rem;--step-2:1.5rem;--step-3:2rem;--step-4:2.5rem;--font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif}html{font-size:16px}body{font-family:var(--font);font-size:var(--step-0);color:var(--ink);background:var(--bg);line-height:1.65}a{color:inherit;text-decoration:none}a:hover{color:var(--brand-text,var(--brand))}strong,b{font-weight:700}.container{width:100%;max-width:var(--container);margin-inline:auto;padding-inline:var(--gutter)}.container-narrow{max-width:860px}.section{padding:56px 0}.section-sm{padding:36px 0}.section-soft{background:var(--bg-soft)}.section-brand{background:var(--brand-700);color:#fff}.section-head{text-align:center;margin-bottom:34px}.section-title{font-size:var(--step-3);font-weight:800;letter-spacing:.3px;text-transform:uppercase;color:var(--ink)}.section-brand .section-title{color:#fff}.section-title::after{content:"";display:block;width:64px;height:3px;margin:14px auto 0;border-radius:var(--radius-pill);background:var(--brand)}.section-sub{margin-top:12px;color:var(--ink-2);font-size:var(--step-0)}.section-brand .section-sub{color:rgba(255,255,255,.8)}.grid{display:grid;gap:22px}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}.grid-5{grid-template-columns:repeat(5,1fr)}.flex{display:flex}.flex-center{display:flex;align-items:center;justify-content:center}.flex-between{display:flex;align-items:center;justify-content:space-between}.flex-wrap{flex-wrap:wrap}.gap-8{gap:8px}.gap-12{gap:12px}.gap-20{gap:20px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:var(--radius-pill);padding:var(--btn-py,12px) var(--btn-px,24px);font:inherit;font-weight:600;line-height:1.2;color:#fff;background:var(--brand);cursor:pointer;user-select:none;text-align:center;transition:background-color .2s ease,box-shadow .2s ease,transform .08s ease,color .2s ease;-webkit-tap-highlight-color:transparent}.btn:hover{background:var(--brand-600);color:#fff;box-shadow:var(--shadow)}.btn:active{transform:scale(.98)}.btn:focus-visible{outline:3px solid var(--brand-ring-strong);outline-offset:2px}.btn[disabled],.btn.is-loading{opacity:.6;pointer-events:none}.btn-ghost{background:#fff;color:var(--ink);border-color:var(--line)}.btn-ghost:hover{background:#fff;color:var(--brand);border-color:var(--brand)}.btn-outline{background:transparent;color:var(--brand);border-color:var(--brand)}.btn-outline:hover{background:var(--brand);color:#fff}.btn-white{background:#fff;color:var(--brand-700)}.btn-white:hover{background:#fff;color:var(--brand)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:var(--danger-ink);color:#fff}.btn-block{display:flex;width:100%}.btn-sm{padding:var(--btn-sm-py,8px) var(--btn-sm-px,16px);font-size:var(--step--1)}.btn-lg{padding:var(--btn-lg-py,15px) var(--btn-lg-px,30px);font-size:var(--step-1)}.btn-icon{padding:0;width:var(--btn-icon-size,34px);height:var(--btn-icon-size,34px);flex:0 0 auto}.btn-icon svg{width:16px;height:16px;flex:0 0 auto}.btn-sm.btn-icon{width:var(--btn-icon-sm-size,28px);height:var(--btn-icon-sm-size,28px)}.btn-sm.btn-icon svg{width:14px;height:14px}.btn-call{align-items:center;gap:12px;padding:10px 22px;text-align:left}.btn-call .btn-call-icon{display:grid;place-items:center;width:34px;height:34px;flex:0 0 34px;border-radius:50%;background:rgba(255,255,255,.22)}.btn-call .btn-call-icon svg{width:18px;height:18px}.btn-call-body{display:flex;flex-direction:column;line-height:1.25}.btn-call-number{font-size:var(--step-1);font-weight:800}.btn-call-note{font-size:var(--step--1);font-weight:400;opacity:.9}.btn-ghost .btn-call-icon{background:var(--brand-soft);color:var(--brand)}.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;transition:box-shadow .25s ease,transform .25s ease,border-color .25s ease}.card:hover{box-shadow:var(--shadow-lg);transform:translateY(-4px);border-color:transparent}.card-media{position:relative;aspect-ratio:4 / 3;background:var(--bg-soft)}.card-media img{width:100%;height:100%;object-fit:cover}.card-body{padding:18px;display:flex;flex-direction:column;gap:8px;flex:1}.card-title{font-size:var(--step-1);font-weight:700}.card-text{color:var(--ink-2);font-size:var(--step-0)}.card-foot{margin-top:auto;padding-top:6px}.card-link{color:var(--brand-text,var(--brand));font-weight:600;display:inline-flex;align-items:center;gap:6px}.card-link:hover{gap:10px}.icon-circle{display:grid;place-items:center;width:56px;height:56px;border-radius:50%;background:var(--brand-soft);color:var(--brand);flex:0 0 auto}.icon-circle svg,.icon-circle img{width:28px;height:28px}.icon-circle-lg{width:72px;height:72px}.icon-circle-lg svg,.icon-circle-lg img{width:34px;height:34px}.icon-circle-outline{background:transparent;border:2px solid currentColor}.icon-16{width:16px;height:16px}.icon-20{width:20px;height:20px}.icon-24{width:24px;height:24px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field-label{font-weight:600;font-size:var(--step--1);color:var(--ink-2)}.field-label .req{color:var(--danger)}.input,.select,.textarea{width:100%;font:inherit;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:var(--radius-sm);padding:var(--input-py,11px) var(--input-px,14px);line-height:1.2;transition:border-color .2s ease,box-shadow .2s ease}.input::placeholder,.textarea::placeholder{color:var(--ink-3)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-ring)}.textarea{min-height:110px;resize:vertical}.select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23556070' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:18px;padding-right:38px}.input[type="file"]{padding:7px 10px;color:var(--ink-2);font-size:var(--step--1);cursor:pointer}.input[type="file"]::file-selector-button{margin-right:12px;padding:8px 18px;border:1px solid var(--brand-soft);border-radius:var(--radius-pill);background:var(--brand-tint);color:var(--brand-700);font:inherit;font-weight:600;cursor:pointer;transition:background-color .2s ease,border-color .2s ease,color .2s ease}.input[type="file"]::file-selector-button:hover{background:var(--brand-soft);border-color:var(--brand);color:var(--brand)}.input[type="file"]::-webkit-file-upload-button{margin-right:12px;padding:8px 18px;border:1px solid var(--brand-soft);border-radius:var(--radius-pill);background:var(--brand-tint);color:var(--brand-700);font:inherit;font-weight:600;cursor:pointer;transition:background-color .2s ease,border-color .2s ease,color .2s ease}.input[type="file"]::-webkit-file-upload-button:hover{background:var(--brand-soft);border-color:var(--brand);color:var(--brand)}.field.has-error .input,.field.has-error .select,.field.has-error .textarea{border-color:var(--danger)}.form-error{color:var(--danger);font-size:var(--step--1)}.form-hint{color:var(--ink-3);font-size:var(--step--1)}.hp-field{position:absolute !important;left:-9999px !important;width:1px;height:1px;overflow:hidden;opacity:0}.checkbox{display:inline-flex;align-items:center;gap:8px;cursor:pointer}.checkbox input{width:17px;height:17px;accent-color:var(--brand)}.badge{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:var(--radius-pill);font-size:var(--step--1);font-weight:600;line-height:1.2;background:var(--brand-soft);color:var(--brand-on-soft,var(--brand-600))}.badge-warning{background:var(--warning-soft);color:var(--warning)}.badge-danger{background:var(--danger-soft);color:var(--danger)}.badge-muted{background:var(--muted-soft);color:var(--ink-2)}.alert{padding:14px 18px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--bg-soft);font-size:var(--step-0)}.alert-success{background:var(--brand-tint);border-color:var(--brand-soft);color:var(--brand-700)}.alert-danger{background:var(--danger-soft);border-color:var(--danger-line);color:var(--danger-ink)}.breadcrumb{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:var(--step--1);color:var(--ink-2);padding:14px 0}.breadcrumb li + li::before{content:"/";margin-right:8px;color:var(--ink-3)}.breadcrumb li{display:flex;align-items:center}.breadcrumb a:hover{color:var(--brand-text,var(--brand))}.pagination{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-top:30px}.pagination a,.pagination span{min-width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;padding:0 12px;border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink-2)}.pagination a:hover{border-color:var(--brand);color:var(--brand-text,var(--brand))}.pagination .is-active{background:var(--brand);border-color:var(--brand);color:#fff}.pagination .is-disabled{opacity:.45;pointer-events:none}.prose{color:var(--ink);line-height:1.8}.prose > * + *{margin-top:16px}.prose h2{font-size:var(--step-2);font-weight:700}.prose h3{font-size:var(--step-1);font-weight:700}.prose ul,.prose ol{padding-left:22px}.prose ul{list-style:disc}.prose ol{list-style:decimal}.prose li + li{margin-top:6px}.prose a{color:var(--brand-text,var(--brand));text-decoration:underline}.prose img{border-radius:var(--radius)}.prose blockquote{border-left:3px solid var(--brand);padding-left:16px;color:var(--ink-2)}.prose table{width:100%;border-collapse:collapse}.prose th,.prose td{border:1px solid var(--line);padding:10px 12px}.prose th{background:var(--bg-soft);text-align:left}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.text-center{text-align:center}.text-right{text-align:right}.text-brand{color:var(--brand-text,var(--brand))}.text-muted{color:var(--ink-2)}.text-sm{font-size:var(--step--1)}.text-lg{font-size:var(--step-1)}.fw-600{font-weight:600}.fw-700{font-weight:700}.fw-800{font-weight:800}.uppercase{text-transform:uppercase}.mt-0{margin-top:0}.mt-8{margin-top:8px}.mt-16{margin-top:16px}.mt-24{margin-top:24px}.mt-32{margin-top:32px}.mb-0{margin-bottom:0}.mb-8{margin-bottom:8px}.mb-16{margin-bottom:16px}.mb-24{margin-bottom:24px}.mb-32{margin-bottom:32px}.hidden{display:none !important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.list-check{display:grid;gap:10px}.list-check li{display:flex;align-items:flex-start;gap:10px}.list-check svg{width:20px;height:20px;flex:0 0 20px;color:var(--brand);margin-top:2px}.ratio-16-9{aspect-ratio:16 / 9}.ratio-4-3{aspect-ratio:4 / 3}.img-cover{width:100%;height:100%;object-fit:cover}@media (max-width:1024px){.grid-5{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(2,1fr)}.section{padding:44px 0}:root{--step-3:1.75rem;--step-4:2rem}}@media (max-width:768px){.grid{gap:16px}.grid-5,.grid-4,.grid-3{grid-template-columns:repeat(2,1fr)}.section{padding:36px 0}:root{--gutter:16px;--step-3:1.5rem}}@media (max-width:520px){.grid-5,.grid-4,.grid-3,.grid-2{grid-template-columns:1fr}:root{--btn-py:11px;--btn-px:20px;--btn-lg-py:13px;--btn-lg-px:24px}.btn-lg{font-size:var(--step-0)}.section-title{font-size:1.35rem}.icon-circle-lg{width:60px;height:60px}}