.pha-do{display:flex;justify-content:center;text-align:center}.gen-labels{display:flex;flex-direction:column;padding-right:10px}.gen-labels span{height:var(--row);display:flex;align-items:flex-start;padding-top:30px;font-weight:700;font-size:15px;color:var(--son-dark);white-space:nowrap}.gen-labels span:after{content:"";flex:1 1;border-top:1px dashed var(--gold);margin:.65em 0 0 8px;min-width:16px}.pha-do ul{justify-content:center;padding:0;margin:0;list-style:none}.pha-do li,.pha-do ul{display:flex;position:relative}.pha-do li{padding:0 8px;flex-direction:column;align-items:center}.unit{height:calc(var(--row) - 40px);margin:20px 0}.couple-pair,.unit{display:flex;align-items:center}.pha-do ul ul:before{content:"";position:absolute;top:-20px;left:50%;height:20px;border-left:2px solid var(--ink-soft)}.pha-do ul ul>li:before{content:"";position:absolute;top:0;left:0;right:0;border-top:2px solid var(--ink-soft)}.pha-do ul ul>li:first-child:before{left:50%}.pha-do ul ul>li:last-child:before{right:50%}.pha-do ul ul>li:only-child:before{display:none}.pha-do ul ul>li:after{content:"";position:absolute;top:0;left:50%;height:20px;border-left:2px solid var(--ink-soft)}.couple-link{width:18px;border-top:3px double var(--son)}.person{width:156px;min-height:80px;padding:8px 10px;background:#fffaf0;border:1.5px solid var(--son-dark);border-radius:6px;display:flex;flex-direction:column;justify-content:center;page-break-inside:avoid;break-inside:avoid}.person.inlaw{border-style:dashed}.person .nm{font-weight:600;font-size:16px;line-height:1.25}.person .meta{font-size:14px;color:var(--ink-soft)}.poster-page{--row:150px;min-height:100dvh}.poster-page,.poster-tools{background:var(--sheen),var(--grain),var(--lac-ground)}.poster-tools{height:56px;padding:0 max(24px,3vw);display:flex;gap:28px;align-items:center;justify-content:flex-end;border-bottom:2px solid transparent;border-image:var(--gold-grad) 1;box-shadow:0 1px 0 var(--lac-black);font-size:0;animation:fade var(--t-entry) var(--ease) both}.poster-tools>*{font-size:15px}.poster-tools>a:first-child{margin-right:auto}.poster-tools .btn,.poster-tools a{position:relative;display:inline-flex;align-items:center;min-height:44px;padding:0 2px;background:none;border:0;border-radius:0;box-shadow:none;filter:none;color:var(--gold-leaf);font:600 15px/1 var(--font-body),system-ui,sans-serif;text-decoration:none;cursor:pointer}.poster-tools .btn:after,.poster-tools a:after{content:"";position:absolute;left:0;right:0;bottom:10px;height:2px;background:var(--gold-leaf);transform:scaleX(0);transition:transform .2s var(--ease)}.poster-tools .btn:focus-visible:after,.poster-tools .btn:hover:after,.poster-tools a:focus-visible:after,.poster-tools a:hover:after{transform:scaleX(1)}.poster-tools .btn{padding:0 16px;min-height:36px;box-shadow:inset 0 0 0 1px var(--gold);border-radius:3px}.poster-tools .btn:after{left:16px;right:16px;bottom:7px}.poster-tools .btn:hover{background:rgba(230,194,122,.1)}.poster-page>.panel{max-width:560px;margin:48px auto;padding:24px 28px;background:var(--ivory-hi);border:0;border-radius:var(--r-card);box-shadow:var(--filet),var(--lift-3)}.poster-scroll{overflow:auto;padding:48px}.poster{background:var(--grain),#f6ead0;padding:20px;width:max-content;min-width:100%;box-shadow:0 0 0 1px rgba(201,162,79,.5),var(--lift-3);animation:fade .4s var(--ease) both}.poster-border{position:relative;padding:18mm 20mm 14mm;border:14px solid var(--cinnabar-dark);outline:2px solid var(--gold);outline-offset:-19px;box-shadow:inset 0 0 0 22px #f6ead0,inset 0 0 0 23px var(--gold-deep);text-align:center}.poster-border:after,.poster-border:before{content:"";position:absolute;left:110px;right:110px;height:10px;background:var(--fret-ink) repeat-x center;pointer-events:none}.poster-border:before{top:30px}.poster-border:after{bottom:30px}.poster-corner{position:absolute;width:64px;height:64px;color:var(--gold-deep);pointer-events:none}.poster-corner.tl{top:34px;left:34px}.poster-corner.tr{top:34px;right:34px;transform:scaleX(-1)}.poster-corner.bl{bottom:34px;left:34px;transform:scaleY(-1)}.poster-corner.br{bottom:34px;right:34px;transform:scale(-1)}.poster-title{margin:0;padding-top:.12em;font:800 64px/1.25 var(--font-display),Georgia,serif;letter-spacing:.18em;text-indent:.18em;color:var(--cinnabar-dark)}.poster-title:after{content:"";display:block;width:360px;height:9px;margin:14px auto 0;background:linear-gradient(90deg,transparent,var(--gold-deep) 44%,transparent 44% 56%,var(--gold-deep) 56%,transparent) 50%/100% 1px no-repeat}.poster-title{position:relative}.poster-title:before{content:"";position:absolute;left:50%;bottom:1px;width:7px;height:7px;border:3.5px solid var(--gold-deep);transform:translateX(-50%) rotate(45deg)}.poster-sub{margin:14px 0 28px;display:flex;align-items:center;justify-content:center;gap:16px;font:italic 600 22px/1.3 var(--font-display),Georgia,serif;color:var(--ink-soft)}.poster-sub:after,.poster-sub:before{content:"";width:40px;border-top:1px solid var(--gold-deep)}.poster .gen-labels{padding-right:18px}.poster .gen-labels span{padding-top:34px;font:600 18px/1 var(--font-caps),Georgia,serif;letter-spacing:.06em;color:var(--cinnabar-dark);font-feature-settings:tabular-nums lining-nums;font-variant-numeric:tabular-nums lining-nums}.poster .gen-labels span:after{border-top:1px dashed var(--rule-strong);margin-top:.5em;min-width:24px}.poster .pha-do ul ul:before,.poster .pha-do ul ul>li:after,.poster .pha-do ul ul>li:before{border-width:1.5px;border-color:rgba(28,13,10,.7)}.poster .person{width:156px;padding:10px 12px;background:var(--ivory-hi);border:1.5px solid var(--cinnabar-dark);border-top:6px solid var(--cinnabar);border-radius:var(--r-tab);box-shadow:0 6px 14px -10px rgba(28,13,10,.6)}.poster .person.inlaw{border-style:dashed;border-top:6px solid var(--gold-deep)}.poster .person .nm{font:700 17px/1.25 var(--font-body),system-ui,sans-serif;color:var(--ink)}.poster .person .meta{margin-top:3px;font:italic 600 14px/1.3 var(--font-display),Georgia,serif;color:var(--ink-soft);font-feature-settings:tabular-nums lining-nums;font-variant-numeric:tabular-nums lining-nums}.poster .couple-link{position:relative;width:28px;border-top:2px solid var(--gold-deep)}.poster .couple-link:after{content:"";position:absolute;left:50%;top:-1px;width:7px;height:7px;box-sizing:border-box;background:var(--cinnabar-dark);border:1px solid var(--gold-deep);transform:translate(-50%,-50%) rotate(45deg)}.poster-foot{display:flex;align-items:center;justify-content:center;gap:20px;margin:32px auto 0;padding-top:22px;max-width:760px;border-top:1px solid var(--gold-deep);text-align:left}.poster-foot:before{content:"Phả";flex:none;width:56px;height:56px;display:grid;place-items:center;border-radius:3px;background:var(--cinnabar);box-shadow:inset 0 0 0 3px var(--cinnabar),inset 0 0 0 4.5px var(--gold-leaf);color:var(--on-lac);font:700 21px/1 var(--font-display),Georgia,serif;transform:rotate(-3deg);-webkit-print-color-adjust:exact;print-color-adjust:exact}.poster-foot p{margin:2px 0;font-size:13px;color:var(--ink-soft)}.qr{width:120px;height:120px;flex:none;padding:6px;background:#fff;border:1px solid var(--gold-deep)}.qr svg{width:100%;height:100%;display:block}.poster-foot .site{margin-top:4px;font:700 20px/1.3 var(--font-display),Georgia,serif;color:var(--cinnabar-dark)}@media print{@page{size:A3 landscape;margin:10mm}.poster-page,body,html{height:auto;min-height:0;background:#fff!important}.no-print,.poster-tools{display:none!important}.poster-scroll{overflow:visible;padding:0}.poster{background:#fff!important;box-shadow:none!important;padding:0;width:auto;min-width:0;animation:none!important;zoom:var(--fit,1)}.poster-border{min-height:calc(270mm / var(--fit, 1));box-shadow:inset 0 0 0 22px #fff,inset 0 0 0 23px var(--gold-deep)}.poster-page{--row:var(--print-row,150px)}.poster-border{display:flex;flex-direction:column}.poster .pha-do{flex:1 0 auto;align-items:center}.poster .person{background:#fff;box-shadow:none}*,:after,:before{animation:none!important;transition:none!important;text-shadow:none!important}.person,.poster,.poster-border,.poster-border:after,.poster-border:before,.poster-foot:before,.poster-title{-webkit-print-color-adjust:exact;print-color-adjust:exact}}