/* Melva & Sugi — 23.10.2026
   Maroon velvet, navy, brown ink on ivory paper, with antique gold taken from the gold ornaments in the ulos photos.
   Signature: the ulos band + fringe, and a gold lozenge ornament drawn from the ulos weave. */

:root {
  --ivory: #F4EEE6;
  --paper: #EFE7DC;
  --paper-2: #E9DFD2;
  --ink: #4E3016;
  --ink-soft: #775A3D;
  --maroon: #6B1F24;
  --maroon-deep: #4A1216;
  --velvet: #350B0E;
  --navy: #18213B;
  --umber: #2B1E18;
  --bone: #E6DCCB;
  --gold: #C4A266;
  --gold-soft: rgba(196, 162, 102, .55);
  --gold-deep: #8E6B34;
  --line: rgba(78, 48, 22, .22);

  --serif: "EB Garamond", "Iowan Old Style", Georgia, serif;
  --roman: "Marcellus", "Trajan Pro", Georgia, serif;
  --script: "Pinyon Script", "Snell Roundhand", cursive;

  --foil: linear-gradient(115deg, #8A6631 0%, #C9A86A 18%, #F3E3B5 33%, #C29B5C 49%, #E6CC92 65%, #9C7639 83%, #D6B87C 100%);
  --foil-deep: linear-gradient(115deg, #6B4B1E 0%, #9C7636 24%, #C8A568 40%, #8A662B 58%, #B38D50 78%, #6B4B1E 100%);

  --grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .3 0 0 0 0 .19 0 0 0 0 .08 0 0 0 .5 -.18'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)'/%3E%3C/svg%3E");
  --grain-light: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 .9 0 0 0 0 .8 0 0 0 .35 -.14'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)'/%3E%3C/svg%3E");

  /* gold lozenge ornament (ulos diamond flanked by threads) */
  --orn: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='28' viewBox='0 0 240 28' fill='none'%3E%3Cpath d='M10 14H80M160 14H230' stroke='%23C4A266' stroke-width='.8'/%3E%3Cpath d='M100 14H108M132 14H140' stroke='%23C4A266' stroke-width='.9'/%3E%3Cpath d='M100.20 14.00 L100.06 13.12 L99.83 12.28 L99.51 11.47 L99.11 10.71 L98.64 10.01 L98.10 9.37 L97.50 8.80 L96.85 8.31 L96.15 7.89 L95.43 7.56 L94.68 7.31 L93.91 7.14 L93.15 7.06 L92.39 7.07 L91.64 7.16 L90.92 7.32 L90.23 7.56 L89.58 7.88 L88.97 8.25 L88.42 8.69 L87.92 9.17 L87.48 9.70 L87.12 10.27 L86.82 10.86 L86.59 11.48 L86.43 12.10 L86.34 12.73 L86.32 13.36 L86.37 13.98 L86.49 14.58 L86.67 15.15 L86.91 15.69 L87.20 16.20 L87.54 16.66 L87.92 17.08 L88.34 17.44 L88.78 17.75 L89.26 18.01 L89.74 18.21 L90.24 18.35 L90.75 18.43 L91.25 18.46 L91.74 18.43 L92.21 18.35 L92.67 18.22 L93.10 18.04 L93.50 17.82 L93.87 17.57 L94.19 17.28 L94.48 16.96 L94.73 16.62 L94.93 16.26 L95.09 15.89 L95.20 15.51 L95.27 15.13 L95.29 14.75 L95.28 14.38 L95.22 14.02 L95.12 13.68 L95.00 13.36 L94.83 13.07 L94.65 12.80 L94.44 12.56 L94.20 12.35 L93.96 12.18 L93.70 12.03 L93.43 11.92 L93.16 11.85 L92.90 11.80 L92.63 11.79 L92.38 11.81 L92.14 11.85 L91.91 11.92 L91.69 12.02 L91.50 12.13 L91.33 12.26 L91.17 12.41 L91.05 12.56 L90.94 12.73 L90.86 12.90 L90.80 13.07 L90.76 13.24 L90.74 13.40 L90.75 13.56 L90.77 13.72 L90.80 13.86 L90.85 13.99 L90.91 14.11 L90.98 14.21 L91.05 14.31' stroke='%23C4A266' stroke-width='1.05' stroke-linecap='round'/%3E%3Cpath d='M139.80 14.00 L139.94 13.12 L140.17 12.28 L140.49 11.47 L140.89 10.71 L141.36 10.01 L141.90 9.37 L142.50 8.80 L143.15 8.31 L143.85 7.89 L144.57 7.56 L145.32 7.31 L146.09 7.14 L146.85 7.06 L147.61 7.07 L148.36 7.16 L149.08 7.32 L149.77 7.56 L150.42 7.88 L151.03 8.25 L151.58 8.69 L152.08 9.17 L152.52 9.70 L152.88 10.27 L153.18 10.86 L153.41 11.48 L153.57 12.10 L153.66 12.73 L153.68 13.36 L153.63 13.98 L153.51 14.58 L153.33 15.15 L153.09 15.69 L152.80 16.20 L152.46 16.66 L152.08 17.08 L151.66 17.44 L151.22 17.75 L150.74 18.01 L150.26 18.21 L149.76 18.35 L149.25 18.43 L148.75 18.46 L148.26 18.43 L147.79 18.35 L147.33 18.22 L146.90 18.04 L146.50 17.82 L146.13 17.57 L145.81 17.28 L145.52 16.96 L145.27 16.62 L145.07 16.26 L144.91 15.89 L144.80 15.51 L144.73 15.13 L144.71 14.75 L144.72 14.38 L144.78 14.02 L144.88 13.68 L145.00 13.36 L145.17 13.07 L145.35 12.80 L145.56 12.56 L145.80 12.35 L146.04 12.18 L146.30 12.03 L146.57 11.92 L146.84 11.85 L147.10 11.80 L147.37 11.79 L147.62 11.81 L147.86 11.85 L148.09 11.92 L148.31 12.02 L148.50 12.13 L148.67 12.26 L148.83 12.41 L148.95 12.56 L149.06 12.73 L149.14 12.90 L149.20 13.07 L149.24 13.24 L149.26 13.40 L149.25 13.56 L149.23 13.72 L149.20 13.86 L149.15 13.99 L149.09 14.11 L149.02 14.21 L148.95 14.31' stroke='%23C4A266' stroke-width='1.05' stroke-linecap='round'/%3E%3Cpath d='M108.00 14.00L120.00 5.00L132.00 14.00L120.00 23.00Z' stroke='%23C4A266' stroke-width='.95'/%3E%3Cpath d='M114.80 14.00L120.00 10.00L125.20 14.00L120.00 18.00Z' fill='%23C4A266' stroke='none'/%3E%3Cpath d='M38.60 14.00L42.00 10.60L45.40 14.00L42.00 17.40ZM194.60 14.00L198.00 10.60L201.40 14.00L198.00 17.40Z' fill='%23C4A266' stroke='none'/%3E%3Ccircle cx='7' cy='14' r='1.3' fill='%23C4A266'/%3E%3Ccircle cx='233' cy='14' r='1.3' fill='%23C4A266'/%3E%3C/svg%3E");
  --orn-deep: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='28' viewBox='0 0 240 28' fill='none'%3E%3Cpath d='M10 14H80M160 14H230' stroke='%238E6B34' stroke-width='.8'/%3E%3Cpath d='M100 14H108M132 14H140' stroke='%238E6B34' stroke-width='.9'/%3E%3Cpath d='M100.20 14.00 L100.06 13.12 L99.83 12.28 L99.51 11.47 L99.11 10.71 L98.64 10.01 L98.10 9.37 L97.50 8.80 L96.85 8.31 L96.15 7.89 L95.43 7.56 L94.68 7.31 L93.91 7.14 L93.15 7.06 L92.39 7.07 L91.64 7.16 L90.92 7.32 L90.23 7.56 L89.58 7.88 L88.97 8.25 L88.42 8.69 L87.92 9.17 L87.48 9.70 L87.12 10.27 L86.82 10.86 L86.59 11.48 L86.43 12.10 L86.34 12.73 L86.32 13.36 L86.37 13.98 L86.49 14.58 L86.67 15.15 L86.91 15.69 L87.20 16.20 L87.54 16.66 L87.92 17.08 L88.34 17.44 L88.78 17.75 L89.26 18.01 L89.74 18.21 L90.24 18.35 L90.75 18.43 L91.25 18.46 L91.74 18.43 L92.21 18.35 L92.67 18.22 L93.10 18.04 L93.50 17.82 L93.87 17.57 L94.19 17.28 L94.48 16.96 L94.73 16.62 L94.93 16.26 L95.09 15.89 L95.20 15.51 L95.27 15.13 L95.29 14.75 L95.28 14.38 L95.22 14.02 L95.12 13.68 L95.00 13.36 L94.83 13.07 L94.65 12.80 L94.44 12.56 L94.20 12.35 L93.96 12.18 L93.70 12.03 L93.43 11.92 L93.16 11.85 L92.90 11.80 L92.63 11.79 L92.38 11.81 L92.14 11.85 L91.91 11.92 L91.69 12.02 L91.50 12.13 L91.33 12.26 L91.17 12.41 L91.05 12.56 L90.94 12.73 L90.86 12.90 L90.80 13.07 L90.76 13.24 L90.74 13.40 L90.75 13.56 L90.77 13.72 L90.80 13.86 L90.85 13.99 L90.91 14.11 L90.98 14.21 L91.05 14.31' stroke='%238E6B34' stroke-width='1.05' stroke-linecap='round'/%3E%3Cpath d='M139.80 14.00 L139.94 13.12 L140.17 12.28 L140.49 11.47 L140.89 10.71 L141.36 10.01 L141.90 9.37 L142.50 8.80 L143.15 8.31 L143.85 7.89 L144.57 7.56 L145.32 7.31 L146.09 7.14 L146.85 7.06 L147.61 7.07 L148.36 7.16 L149.08 7.32 L149.77 7.56 L150.42 7.88 L151.03 8.25 L151.58 8.69 L152.08 9.17 L152.52 9.70 L152.88 10.27 L153.18 10.86 L153.41 11.48 L153.57 12.10 L153.66 12.73 L153.68 13.36 L153.63 13.98 L153.51 14.58 L153.33 15.15 L153.09 15.69 L152.80 16.20 L152.46 16.66 L152.08 17.08 L151.66 17.44 L151.22 17.75 L150.74 18.01 L150.26 18.21 L149.76 18.35 L149.25 18.43 L148.75 18.46 L148.26 18.43 L147.79 18.35 L147.33 18.22 L146.90 18.04 L146.50 17.82 L146.13 17.57 L145.81 17.28 L145.52 16.96 L145.27 16.62 L145.07 16.26 L144.91 15.89 L144.80 15.51 L144.73 15.13 L144.71 14.75 L144.72 14.38 L144.78 14.02 L144.88 13.68 L145.00 13.36 L145.17 13.07 L145.35 12.80 L145.56 12.56 L145.80 12.35 L146.04 12.18 L146.30 12.03 L146.57 11.92 L146.84 11.85 L147.10 11.80 L147.37 11.79 L147.62 11.81 L147.86 11.85 L148.09 11.92 L148.31 12.02 L148.50 12.13 L148.67 12.26 L148.83 12.41 L148.95 12.56 L149.06 12.73 L149.14 12.90 L149.20 13.07 L149.24 13.24 L149.26 13.40 L149.25 13.56 L149.23 13.72 L149.20 13.86 L149.15 13.99 L149.09 14.11 L149.02 14.21 L148.95 14.31' stroke='%238E6B34' stroke-width='1.05' stroke-linecap='round'/%3E%3Cpath d='M108.00 14.00L120.00 5.00L132.00 14.00L120.00 23.00Z' stroke='%238E6B34' stroke-width='.95'/%3E%3Cpath d='M114.80 14.00L120.00 10.00L125.20 14.00L120.00 18.00Z' fill='%236B1F24' stroke='none'/%3E%3Cpath d='M38.60 14.00L42.00 10.60L45.40 14.00L42.00 17.40ZM194.60 14.00L198.00 10.60L201.40 14.00L198.00 17.40Z' fill='%238E6B34' stroke='none'/%3E%3Ccircle cx='7' cy='14' r='1.3' fill='%238E6B34'/%3E%3Ccircle cx='233' cy='14' r='1.3' fill='%238E6B34'/%3E%3C/svg%3E");
  --gorga-corner: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='130' height='130' viewBox='0 0 130 130' fill='none'%3E%3Cpath d='M8 8H122M8 8V122' stroke='%238E6B34' stroke-width='.9'/%3E%3Cpath d='M20 20H52M20 20V52' stroke='%238E6B34' stroke-width='.7' opacity='.7'/%3E%3Cpath d='M48.00 34.00 L47.74 32.36 L47.29 30.78 L46.66 29.29 L45.87 27.90 L44.93 26.63 L43.86 25.49 L42.67 24.50 L41.39 23.67 L40.04 23.01 L38.64 22.52 L37.20 22.21 L35.76 22.07 L34.33 22.10 L32.94 22.31 L31.59 22.67 L30.32 23.19 L29.13 23.84 L28.05 24.62 L27.08 25.52 L26.24 26.51 L25.53 27.57 L24.97 28.70 L24.55 29.87 L24.28 31.06 L24.15 32.26 L24.17 33.45 L24.33 34.61 L24.62 35.72 L25.04 36.77 L25.57 37.75 L26.21 38.64 L26.94 39.44 L27.74 40.13 L28.61 40.71 L29.52 41.17 L30.47 41.51 L31.43 41.73 L32.39 41.83 L33.34 41.82 L34.27 41.69 L35.15 41.45 L35.99 41.12 L36.76 40.69 L37.46 40.19 L38.08 39.62 L38.61 38.98 L39.06 38.31 L39.41 37.59 L39.67 36.86 L39.83 36.12 L39.89 35.38 L39.87 34.66 L39.76 33.96 L39.57 33.30 L39.31 32.68 L38.98 32.11 L38.59 31.60 L38.16 31.15 L37.69 30.77 L37.18 30.46 L36.66 30.23 L36.13 30.06 L35.60 29.97 L35.07 29.94 L34.56 29.98 L34.08 30.08 L33.63 30.24 L33.22 30.44 L32.85 30.69 L32.52 30.97 L32.24 31.28 L32.02 31.61 L31.84 31.95 L31.72 32.30 L31.65 32.64 L31.62 32.98 L31.64 33.31 L31.70 33.61 L31.80 33.89 L31.92 34.15 L32.07 34.37 L32.24 34.56 L32.43 34.71 L32.62 34.83 L32.82 34.92 L33.02 34.98 L33.21 35.00 L33.38 35.00 L33.55 34.98 L33.69 34.95' stroke='%238E6B34' stroke-width='1.05' stroke-linecap='round'/%3E%3Cpath d='M20.00 34.00 L20.26 35.64 L20.71 37.22 L21.34 38.71 L22.13 40.10 L23.07 41.37 L24.14 42.51 L25.33 43.50 L26.61 44.33 L27.96 44.99 L29.36 45.48 L30.80 45.79 L32.24 45.93 L33.67 45.90 L35.06 45.69 L36.41 45.33 L37.68 44.81 L38.87 44.16 L39.95 43.38 L40.92 42.48 L41.76 41.49 L42.47 40.43 L43.03 39.30 L43.45 38.13 L43.72 36.94 L43.85 35.74 L43.83 34.55 L43.67 33.39 L43.38 32.28 L42.96 31.23 L42.43 30.25 L41.79 29.36 L41.06 28.56 L40.26 27.87 L39.39 27.29 L38.48 26.83 L37.53 26.49 L36.57 26.27 L35.61 26.17 L34.66 26.18 L33.73 26.31 L32.85 26.55 L32.01 26.88 L31.24 27.31 L30.54 27.81 L29.92 28.38 L29.39 29.02 L28.94 29.69 L28.59 30.41 L28.33 31.14 L28.17 31.88 L28.11 32.62 L28.13 33.34 L28.24 34.04 L28.43 34.70 L28.69 35.32 L29.02 35.89 L29.41 36.40 L29.84 36.85 L30.31 37.23 L30.82 37.54 L31.34 37.77 L31.87 37.94 L32.40 38.03 L32.93 38.06 L33.44 38.02 L33.92 37.92 L34.37 37.76 L34.78 37.56 L35.15 37.31 L35.48 37.03 L35.76 36.72 L35.98 36.39 L36.16 36.05 L36.28 35.70 L36.35 35.36 L36.38 35.02 L36.36 34.69 L36.30 34.39 L36.20 34.11 L36.08 33.85 L35.93 33.63 L35.76 33.44 L35.57 33.29 L35.38 33.17 L35.18 33.08 L34.98 33.02 L34.79 33.00 L34.62 33.00 L34.45 33.02 L34.31 33.05' stroke='%238E6B34' stroke-width='1.05' stroke-linecap='round'/%3E%3Cpath d='M57.5 11L66.5 11L62 18ZM11 57.5L11 66.5L18 62ZM71.5 11L80.5 11L76 18ZM11 71.5L11 80.5L18 76ZM85.5 11L94.5 11L90 18ZM11 85.5L11 94.5L18 90ZM99.5 11L108.5 11L104 18ZM11 99.5L11 108.5L18 104Z' fill='rgba(107,31,36,.55)'/%3E%3Cpath d='M3.00 8.00L8.00 3.00L13.00 8.00L8.00 13.00Z' fill='%238E6B34'/%3E%3Ccircle cx='126' cy='8' r='1.5' fill='%238E6B34'/%3E%3Ccircle cx='8' cy='126' r='1.5' fill='%238E6B34'/%3E%3C/svg%3E");
  --gorga-corner-gold: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='130' height='130' viewBox='0 0 130 130' fill='none'%3E%3Cpath d='M8 8H122M8 8V122' stroke='%23C4A266' stroke-width='.9'/%3E%3Cpath d='M20 20H52M20 20V52' stroke='%23C4A266' stroke-width='.7' opacity='.7'/%3E%3Cpath d='M48.00 34.00 L47.74 32.36 L47.29 30.78 L46.66 29.29 L45.87 27.90 L44.93 26.63 L43.86 25.49 L42.67 24.50 L41.39 23.67 L40.04 23.01 L38.64 22.52 L37.20 22.21 L35.76 22.07 L34.33 22.10 L32.94 22.31 L31.59 22.67 L30.32 23.19 L29.13 23.84 L28.05 24.62 L27.08 25.52 L26.24 26.51 L25.53 27.57 L24.97 28.70 L24.55 29.87 L24.28 31.06 L24.15 32.26 L24.17 33.45 L24.33 34.61 L24.62 35.72 L25.04 36.77 L25.57 37.75 L26.21 38.64 L26.94 39.44 L27.74 40.13 L28.61 40.71 L29.52 41.17 L30.47 41.51 L31.43 41.73 L32.39 41.83 L33.34 41.82 L34.27 41.69 L35.15 41.45 L35.99 41.12 L36.76 40.69 L37.46 40.19 L38.08 39.62 L38.61 38.98 L39.06 38.31 L39.41 37.59 L39.67 36.86 L39.83 36.12 L39.89 35.38 L39.87 34.66 L39.76 33.96 L39.57 33.30 L39.31 32.68 L38.98 32.11 L38.59 31.60 L38.16 31.15 L37.69 30.77 L37.18 30.46 L36.66 30.23 L36.13 30.06 L35.60 29.97 L35.07 29.94 L34.56 29.98 L34.08 30.08 L33.63 30.24 L33.22 30.44 L32.85 30.69 L32.52 30.97 L32.24 31.28 L32.02 31.61 L31.84 31.95 L31.72 32.30 L31.65 32.64 L31.62 32.98 L31.64 33.31 L31.70 33.61 L31.80 33.89 L31.92 34.15 L32.07 34.37 L32.24 34.56 L32.43 34.71 L32.62 34.83 L32.82 34.92 L33.02 34.98 L33.21 35.00 L33.38 35.00 L33.55 34.98 L33.69 34.95' stroke='%23C4A266' stroke-width='1.05' stroke-linecap='round'/%3E%3Cpath d='M20.00 34.00 L20.26 35.64 L20.71 37.22 L21.34 38.71 L22.13 40.10 L23.07 41.37 L24.14 42.51 L25.33 43.50 L26.61 44.33 L27.96 44.99 L29.36 45.48 L30.80 45.79 L32.24 45.93 L33.67 45.90 L35.06 45.69 L36.41 45.33 L37.68 44.81 L38.87 44.16 L39.95 43.38 L40.92 42.48 L41.76 41.49 L42.47 40.43 L43.03 39.30 L43.45 38.13 L43.72 36.94 L43.85 35.74 L43.83 34.55 L43.67 33.39 L43.38 32.28 L42.96 31.23 L42.43 30.25 L41.79 29.36 L41.06 28.56 L40.26 27.87 L39.39 27.29 L38.48 26.83 L37.53 26.49 L36.57 26.27 L35.61 26.17 L34.66 26.18 L33.73 26.31 L32.85 26.55 L32.01 26.88 L31.24 27.31 L30.54 27.81 L29.92 28.38 L29.39 29.02 L28.94 29.69 L28.59 30.41 L28.33 31.14 L28.17 31.88 L28.11 32.62 L28.13 33.34 L28.24 34.04 L28.43 34.70 L28.69 35.32 L29.02 35.89 L29.41 36.40 L29.84 36.85 L30.31 37.23 L30.82 37.54 L31.34 37.77 L31.87 37.94 L32.40 38.03 L32.93 38.06 L33.44 38.02 L33.92 37.92 L34.37 37.76 L34.78 37.56 L35.15 37.31 L35.48 37.03 L35.76 36.72 L35.98 36.39 L36.16 36.05 L36.28 35.70 L36.35 35.36 L36.38 35.02 L36.36 34.69 L36.30 34.39 L36.20 34.11 L36.08 33.85 L35.93 33.63 L35.76 33.44 L35.57 33.29 L35.38 33.17 L35.18 33.08 L34.98 33.02 L34.79 33.00 L34.62 33.00 L34.45 33.02 L34.31 33.05' stroke='%23C4A266' stroke-width='1.05' stroke-linecap='round'/%3E%3Cpath d='M57.5 11L66.5 11L62 18ZM11 57.5L11 66.5L18 62ZM71.5 11L80.5 11L76 18ZM11 71.5L11 80.5L18 76ZM85.5 11L94.5 11L90 18ZM11 85.5L11 94.5L18 90ZM99.5 11L108.5 11L104 18ZM11 99.5L11 108.5L18 104Z' fill='rgba(196,162,102,.45)'/%3E%3Cpath d='M3.00 8.00L8.00 3.00L13.00 8.00L8.00 13.00Z' fill='%23C4A266'/%3E%3Ccircle cx='126' cy='8' r='1.5' fill='%23C4A266'/%3E%3Ccircle cx='8' cy='126' r='1.5' fill='%23C4A266'/%3E%3C/svg%3E");
  --gorga-crest: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='84' height='34' viewBox='0 0 84 34' fill='none'%3E%3Cpath d='M14.50 19.00 L14.66 18.05 L14.90 17.13 L15.24 16.25 L15.66 15.43 L16.16 14.65 L16.72 13.94 L17.35 13.30 L18.04 12.74 L18.76 12.25 L19.53 11.84 L20.32 11.52 L21.13 11.29 L21.95 11.14 L22.77 11.08 L23.59 11.10 L24.38 11.20 L25.15 11.38 L25.89 11.64 L26.59 11.97 L27.24 12.36 L27.84 12.81 L28.38 13.31 L28.87 13.85 L29.28 14.44 L29.63 15.06 L29.91 15.70 L30.12 16.35 L30.26 17.01 L30.33 17.68 L30.33 18.33 L30.26 18.98 L30.13 19.60 L29.94 20.20 L29.70 20.76 L29.40 21.29 L29.05 21.78 L28.66 22.21 L28.24 22.60 L27.78 22.94 L27.30 23.23 L26.80 23.45 L26.30 23.63 L25.78 23.74 L25.27 23.80 L24.76 23.81 L24.27 23.77 L23.79 23.67 L23.33 23.53 L22.90 23.35 L22.50 23.12 L22.13 22.86 L21.80 22.57 L21.51 22.26 L21.26 21.92 L21.05 21.56 L20.88 21.20 L20.76 20.83 L20.68 20.45 L20.63 20.08 L20.63 19.72 L20.67 19.36 L20.74 19.02 L20.85 18.70 L20.98 18.40 L21.15 18.13 L21.33 17.88 L21.54 17.66 L21.76 17.47 L21.99 17.30 L22.24 17.17 L22.48 17.07 L22.73 17.00 L22.98 16.96 L23.22 16.95 L23.45 16.96 L23.68 17.00 L23.88 17.06 L24.08 17.14 L24.25 17.24 L24.41 17.35 L24.55 17.48 L24.67 17.61 L24.76 17.75 L24.84 17.89 L24.90 18.04 L24.94 18.18 L24.96 18.32 L24.97 18.45 L24.96 18.58 L24.95 18.69' stroke='%238E6B34' stroke-width='1.1' stroke-linecap='round'/%3E%3Cpath d='M69.50 19.00 L69.34 18.05 L69.10 17.13 L68.76 16.25 L68.34 15.43 L67.84 14.65 L67.28 13.94 L66.65 13.30 L65.96 12.74 L65.24 12.25 L64.47 11.84 L63.68 11.52 L62.87 11.29 L62.05 11.14 L61.23 11.08 L60.41 11.10 L59.62 11.20 L58.85 11.38 L58.11 11.64 L57.41 11.97 L56.76 12.36 L56.16 12.81 L55.62 13.31 L55.13 13.85 L54.72 14.44 L54.37 15.06 L54.09 15.70 L53.88 16.35 L53.74 17.01 L53.67 17.68 L53.67 18.33 L53.74 18.98 L53.87 19.60 L54.06 20.20 L54.30 20.76 L54.60 21.29 L54.95 21.78 L55.34 22.21 L55.76 22.60 L56.22 22.94 L56.70 23.23 L57.20 23.45 L57.70 23.63 L58.22 23.74 L58.73 23.80 L59.24 23.81 L59.73 23.77 L60.21 23.67 L60.67 23.53 L61.10 23.35 L61.50 23.12 L61.87 22.86 L62.20 22.57 L62.49 22.26 L62.74 21.92 L62.95 21.56 L63.12 21.20 L63.24 20.83 L63.32 20.45 L63.37 20.08 L63.37 19.72 L63.33 19.36 L63.26 19.02 L63.15 18.70 L63.02 18.40 L62.85 18.13 L62.67 17.88 L62.46 17.66 L62.24 17.47 L62.01 17.30 L61.76 17.17 L61.52 17.07 L61.27 17.00 L61.02 16.96 L60.78 16.95 L60.55 16.96 L60.32 17.00 L60.12 17.06 L59.92 17.14 L59.75 17.24 L59.59 17.35 L59.45 17.48 L59.33 17.61 L59.24 17.75 L59.16 17.89 L59.10 18.04 L59.06 18.18 L59.04 18.32 L59.03 18.45 L59.04 18.58 L59.05 18.69' stroke='%238E6B34' stroke-width='1.1' stroke-linecap='round'/%3E%3Cpath d='M33.5 19H36M48 19H50.5' stroke='%238E6B34' stroke-width='1'/%3E%3Cpath d='M35.50 19.00L42.00 10.50L48.50 19.00L42.00 27.50Z' stroke='%238E6B34' stroke-width='1'/%3E%3Cpath d='M39.20 19.00L42.00 15.40L44.80 19.00L42.00 22.60Z' fill='%236B1F24'/%3E%3Cpath d='M42 2.5l2.2 3-2.2 3-2.2-3z' fill='%238E6B34'/%3E%3C/svg%3E");
  --rumah-bolon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='176' viewBox='0 0 220 176' fill='none' stroke='%23C4A266' stroke-width='1.2' stroke-linejoin='round' stroke-linecap='round'%3E%3Cpath d='M10 16C44 30 76 46 110 46C144 46 176 30 210 16M10 16C8 10 11 5 16 6M210 16C212 10 209 5 204 6M10 16L36 100M210 16L184 100M36 100H184M24 34C54 48 82 58 110 58C138 58 166 48 196 34M30 60C58 70 84 76 110 76C136 76 162 70 190 60M42 100V124H178V100M42 112H178M38 124H182M52 124V156M74 124V156M98 124V156M122 124V156M146 124V156M168 124V156M46 142H174M18 157H202'/%3E%3Cpath d='M52.00 106.50L56.00 102.00L60.00 106.50L56.00 111.00ZM68.00 106.50L72.00 102.00L76.00 106.50L72.00 111.00ZM84.00 106.50L88.00 102.00L92.00 106.50L88.00 111.00ZM100.00 106.50L104.00 102.00L108.00 106.50L104.00 111.00ZM116.00 106.50L120.00 102.00L124.00 106.50L120.00 111.00ZM132.00 106.50L136.00 102.00L140.00 106.50L136.00 111.00ZM148.00 106.50L152.00 102.00L156.00 106.50L152.00 111.00Z'/%3E%3Cpath d='M44 124L49 118L54 124M54 124L59 118L64 124M64 124L69 118L74 124M74 124L79 118L84 124M84 124L89 118L94 124M94 124L99 118L104 124M104 124L109 118L114 124M114 124L119 118L124 124M124 124L129 118L134 124M134 124L139 118L144 124M144 124L149 118L154 124M154 124L159 118L164 124M164 124L169 118L174 124M174 124L179 118L184 124' stroke-width='.9'/%3E%3Cpath d='M103.00 64.00L110.00 55.00L117.00 64.00L110.00 73.00Z' fill='%23C4A266' fill-opacity='.35'/%3E%3C/svg%3E");
  --dia: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10'%3E%3Cpath d='M5 0l5 5-5 5-5-5z' fill='%23C4A266'/%3E%3C/svg%3E");

  /* woven band tile 28x34, with gold edge threads */
  --ulos-h: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='34'%3E%3Crect width='28' height='34' fill='%232B1E18'/%3E%3Crect y='1' width='28' height='1' fill='%23C4A266'/%3E%3Crect y='4' width='28' height='2' fill='%238A2A30'/%3E%3Cpath d='M0 8.5h28M0 25.5h28' stroke='%23E6DCCB' stroke-width='.7' stroke-dasharray='1 2'/%3E%3Cpath d='M0 17l7-6 7 6-7 6zM14 17l7-6 7 6-7 6z' fill='none' stroke='%23E6DCCB' stroke-width='1.1'/%3E%3Cpath d='M7 14.5l2.5 2.5L7 19.5 4.5 17z' fill='%238A2A30'/%3E%3Cpath d='M21 15l2 2-2 2-2-2z' fill='%23C4A266'/%3E%3Crect y='28' width='28' height='2' fill='%238A2A30'/%3E%3Crect y='32' width='28' height='1' fill='%23C4A266'/%3E%3C/svg%3E");
  --ulos-v: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='34' height='28'%3E%3Cg transform='translate(34 0) rotate(90)'%3E%3Crect width='28' height='34' fill='%232B1E18'/%3E%3Crect y='1' width='28' height='1' fill='%23C4A266'/%3E%3Crect y='4' width='28' height='2' fill='%238A2A30'/%3E%3Cpath d='M0 8.5h28M0 25.5h28' stroke='%23E6DCCB' stroke-width='.7' stroke-dasharray='1 2'/%3E%3Cpath d='M0 17l7-6 7 6-7 6zM14 17l7-6 7 6-7 6z' fill='none' stroke='%23E6DCCB' stroke-width='1.1'/%3E%3Cpath d='M7 14.5l2.5 2.5L7 19.5 4.5 17z' fill='%238A2A30'/%3E%3Cpath d='M21 15l2 2-2 2-2-2z' fill='%23C4A266'/%3E%3Crect y='28' width='28' height='2' fill='%238A2A30'/%3E%3Crect y='32' width='28' height='1' fill='%23C4A266'/%3E%3C/g%3E%3C/svg%3E");
  --fringe: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='26'%3E%3Cpath d='M2.5 2v21' stroke='%232B1E18' stroke-width='1.15' stroke-linecap='round'/%3E%3Cpath d='M5 2v24' stroke='%238A2A30' stroke-width='1.15' stroke-linecap='round'/%3E%3Cpath d='M7.5 2v19' stroke='%23C4A266' stroke-width='1.15' stroke-linecap='round'/%3E%3Cpath d='M12.5 2v23' stroke='%232B1E18' stroke-width='1.15' stroke-linecap='round'/%3E%3Cpath d='M15 2v20' stroke='%23CDBFA8' stroke-width='1.15' stroke-linecap='round'/%3E%3Cpath d='M17.5 2v25' stroke='%232B1E18' stroke-width='1.15' stroke-linecap='round'/%3E%3Cpath d='M22.5 2v19' stroke='%238A2A30' stroke-width='1.15' stroke-linecap='round'/%3E%3Cpath d='M25 2v24' stroke='%232B1E18' stroke-width='1.15' stroke-linecap='round'/%3E%3Cpath d='M27.5 2v21' stroke='%23C4A266' stroke-width='1.15' stroke-linecap='round'/%3E%3Cpath d='M32.5 2v25' stroke='%23CDBFA8' stroke-width='1.15' stroke-linecap='round'/%3E%3Cpath d='M35 2v20' stroke='%232B1E18' stroke-width='1.15' stroke-linecap='round'/%3E%3Cpath d='M37.5 2v23' stroke='%238A2A30' stroke-width='1.15' stroke-linecap='round'/%3E%3Crect x='1' y='0' width='8' height='3.2' rx='1.4' fill='%232B1E18'/%3E%3Crect x='11' y='0' width='8' height='3.2' rx='1.4' fill='%232B1E18'/%3E%3Crect x='21' y='0' width='8' height='3.2' rx='1.4' fill='%232B1E18'/%3E%3Crect x='31' y='0' width='8' height='3.2' rx='1.4' fill='%232B1E18'/%3E%3C/svg%3E");
}

*, *::before, *::after { box-sizing: border-box; }
html { color-scheme: light; -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--ivory);
  color: var(--ink);
  font-family: var(--serif);
  font-size: 1.0625rem;
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
html.locked, html.locked body { overflow: hidden; height: 100%; overscroll-behavior: none; }
body.lb-open { overflow: hidden; }

img { display: block; max-width: 100%; height: auto; }
p { margin: 0; text-wrap: pretty; }
h1, h2, h3 { font-weight: 400; margin: 0; line-height: 1.2; }
a { color: inherit; }
button { font: inherit; }
:focus-visible { outline: 2px solid var(--gold); outline-offset: 3px; }
[hidden] { display: none !important; }

/* ---------- type voices ---------- */
.caps { font-family: var(--roman); text-transform: uppercase; letter-spacing: .22em; }
.script { font-family: var(--script); font-weight: 400; letter-spacing: 0; line-height: 1.1; }
.foil {
  background: var(--foil);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  -webkit-text-fill-color: transparent;
}
.foil--deep { background-image: var(--foil-deep); }

.h2 { font-size: 1.3rem; text-align: center; }
.head { display: flex; flex-direction: column; align-items: center; gap: 1rem; margin-bottom: 2.5rem; }
.head--light .h2 { color: var(--ivory); }

.orn { width: 240px; max-width: 78%; height: 28px; margin: 0 auto; background: var(--orn) center / contain no-repeat; }
.orn--deep { background-image: var(--orn-deep); }
.orn--sm { width: 160px; height: 19px; }

/* ---------- surfaces ---------- */
.paper { background: var(--grain), var(--paper); }
.paper-2 { background: var(--grain), var(--paper-2); }
.velvet {
  background:
    var(--grain-light),
    radial-gradient(120% 70% at 50% 0%, rgba(140, 40, 46, .55) 0%, rgba(140, 40, 46, 0) 60%),
    radial-gradient(90% 60% at 50% 100%, rgba(20, 3, 5, .6) 0%, rgba(20, 3, 5, 0) 70%),
    var(--maroon-deep);
  color: var(--ivory);
}
.navy {
  background:
    var(--grain-light),
    radial-gradient(110% 60% at 50% 0%, rgba(58, 74, 120, .45) 0%, rgba(58, 74, 120, 0) 65%),
    var(--navy);
  color: var(--bone);
}

/* double gold frame with lozenge corners */
.gframe { position: absolute; inset: 14px; border: 1px solid var(--gold-soft); pointer-events: none; }
.gframe::before { content: ""; position: absolute; inset: 5px; border: 1px solid rgba(196, 162, 102, .28); }
.gframe::after {
  content: "";
  position: absolute;
  inset: -5px;
  background:
    var(--dia) 0 0 / 10px no-repeat,
    var(--dia) 100% 0 / 10px no-repeat,
    var(--dia) 0 100% / 10px no-repeat,
    var(--dia) 100% 100% / 10px no-repeat;
}

/* ---------- buttons ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .55rem;
  min-height: 48px;
  padding: 0 1.5rem;
  border: 1px solid currentColor;
  border-radius: 0;
  background: transparent;
  color: inherit;
  font: 400 .8rem/1 var(--roman);
  letter-spacing: .18em;
  text-transform: uppercase;
  text-decoration: none;
  cursor: pointer;
  transition: filter .2s, background-color .2s, color .2s;
}
.btn--foil {
  background: var(--foil);
  background-size: 160% 100%;
  border: 0;
  color: #3A0D10;
  box-shadow: 0 10px 26px -14px rgba(0, 0, 0, .7), inset 0 0 0 1px rgba(255, 245, 215, .35);
}
.btn--foil:hover { filter: brightness(1.06); }
.btn--maroon { background: var(--maroon); border-color: var(--maroon); color: var(--ivory); }
.btn--maroon:hover { background: var(--maroon-deep); }
.btn--maroon:disabled { opacity: .6; cursor: progress; }
.btn--line { border-color: var(--gold-deep); color: var(--ink); }
.btn--line:hover { background: rgba(142, 107, 52, .08); }
.btn--line-gold { border-color: var(--gold-soft); color: var(--gold); }
.btn--line-gold:hover { background: rgba(196, 162, 102, .1); }
.btn--link {
  border: 0;
  padding: 0 .25rem;
  font: italic 1rem var(--serif);
  letter-spacing: .01em;
  text-transform: none;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 5px;
}

/* ---------- ulos pieces ---------- */
.ulos { height: 34px; flex: none; background: var(--umber) var(--ulos-h) repeat-x 0 0 / 28px 34px; }
.fringe { height: 26px; background: var(--fringe) repeat-x 0 0 / 40px 26px; transform-origin: 50% 0; }

/* ---------- cover ---------- */
.cover { display: none; }
.js .cover {
  position: fixed;
  inset: 0;
  z-index: 60;
  display: flex;
  flex-direction: column;
  transition: transform 1.35s cubic-bezier(.77, 0, .18, 1);
  will-change: transform;
}
.cover__panel {
  position: relative;
  flex: 1;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background: var(--velvet);
  color: var(--ivory);
}
.cover__photo img {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  width: 100%;
  height: auto;
  max-height: 100%;
  object-fit: cover;
  object-position: 50% 30%;
  -webkit-mask-image: linear-gradient(to bottom, transparent 0%, #000 24%);
  mask-image: linear-gradient(to bottom, transparent 0%, #000 24%);
}
.cover__panel::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(to bottom, rgba(30, 6, 8, .55) 0%, rgba(30, 6, 8, 0) 34%),
    linear-gradient(to top, rgba(30, 6, 8, .92) 0%, rgba(30, 6, 8, .6) 26%, rgba(30, 6, 8, 0) 50%);
  pointer-events: none;
}
.cover__frame { z-index: 2; bottom: 48px; }
.cover__panel > .ulos { position: relative; z-index: 2; }
.cover__body {
  position: relative;
  z-index: 3;
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: center;
  text-align: center;
  padding: max(9vh, 56px) 32px 44px;
}
.cover__kicker { font-size: .72rem; letter-spacing: .34em; color: var(--gold); }
.cover__names { font-size: clamp(2.7rem, 12.5vw, 5rem); margin: .9rem 0 calc(.7rem - .3em); padding: 0 .12em .3em; white-space: nowrap; }
.cover__date { display: flex; align-items: center; justify-content: center; gap: .9rem; font-family: var(--roman); font-size: 1.05rem; letter-spacing: .12em; }
.cover__date i { width: 6px; height: 6px; background: var(--gold); transform: rotate(45deg); }
.cover__to { font-size: .95rem; font-style: italic; opacity: .85; }
.cover__guest {
  position: relative;
  font-family: var(--roman);
  font-size: 1.45rem;
  line-height: 1.3;
  margin: .7rem 0 1.5rem;
  padding: .55rem 1.6rem;
  max-width: 24ch;
  text-wrap: balance;
  border-top: 1px solid var(--gold-soft);
  border-bottom: 1px solid var(--gold-soft);
}
.cover.is-open { transform: translateY(calc(-100% - 8px)); }
.cover.is-open .fringe { animation: sway 1.35s cubic-bezier(.3, 0, .3, 1); }
@keyframes sway {
  0% { transform: skewX(0); }
  35% { transform: skewX(14deg) scaleY(.92); }
  70% { transform: skewX(-6deg); }
  100% { transform: skewX(0); }
}

/* ---------- layout ---------- */
.side, .selvedge { display: none; }
.col { outline: none; }

/* ---------- monogram (logo as mask so it takes any fill) ---------- */
.mono {
  aspect-ratio: 711 / 872;
  background: var(--ink);
  -webkit-mask: url("assets/img/logo-mono.png") center / contain no-repeat;
  mask: url("assets/img/logo-mono.png") center / contain no-repeat;
}
.mono--foil { position: relative; overflow: hidden; background: var(--foil); }
.mono--foil::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(105deg, transparent 35%, rgba(255, 250, 230, .95) 50%, transparent 65%);
  transform: translateX(-130%);
}

/* ---------- one photo per section, each with its own frame shape ---------- */
.window, .cameo, .plate { position: relative; margin: 0 auto; }
.window img, .cameo img, .plate img { width: 100%; aspect-ratio: 3 / 4; object-fit: cover; }
.window::before, .window::after, .cameo::before, .cameo::after, .plate::before {
  content: "";
  position: absolute;
  pointer-events: none;
  border: 1px solid var(--gold-deep);
}
.window { width: min(60%, 260px); margin-bottom: 1.5rem; }
.window--wide { width: min(86%, 400px); }
.window--wide img, .plate--wide img { aspect-ratio: auto; }
.window--light::before, .window--light::after { border-color: var(--gold); }
.window::before { inset: -10px; opacity: .7; }
.window::after { inset: -17px; opacity: .3; }
.cameo { width: min(50%, 220px); margin-bottom: 4rem; }
.cameo img { border-radius: 50%; }
.cameo::before, .cameo::after { border-radius: 50%; }
.cameo::before { inset: -9px; opacity: .7; }
.cameo::after { inset: -16px; opacity: .3; }
.plate { width: min(56%, 240px); margin-bottom: 4.25rem; }
.plate--wide { width: min(84%, 400px); }
.plate::before { inset: -10px; border-color: var(--gold-soft); }
.plate::after {
  content: "";
  position: absolute;
  inset: -15px;
  pointer-events: none;
  background:
    var(--dia) 0 0 / 10px no-repeat,
    var(--dia) 100% 0 / 10px no-repeat,
    var(--dia) 0 100% / 10px no-repeat,
    var(--dia) 100% 100% / 10px no-repeat;
}
.events__photo img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  object-position: 50% 62%;
  -webkit-mask-image: linear-gradient(to bottom, #000 0%, #000 55%, transparent 100%);
  mask-image: linear-gradient(to bottom, #000 0%, #000 55%, transparent 100%);
}
.js .rv-photo { opacity: 0; transform: translateY(20px); transition: opacity 1.4s ease, transform 1.6s cubic-bezier(.2, .7, .2, 1); }
.js .rv-photo.in { opacity: 1; transform: none; }

/* ---------- intro ---------- */
.intro { padding: 120px 32px 72px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 2.25rem; }
.intro__lead { max-width: 32ch; font-size: 1.14rem; line-height: 1.8; }
.verse { margin: 0; max-width: 32ch; color: var(--ink-soft); }
.verse p { font-style: italic; line-height: 1.8; }
.verse cite { display: block; margin-top: .9rem; font-style: normal; font-size: .72rem; color: var(--gold-deep); }

/* ---------- couple: each person sits in a soft arch panel ---------- */
.couple { padding: 96px 20px 128px; }
/* profile card: the photo fills the card, the words sit on its lower part */
.profile {
  position: relative;
  overflow: hidden;
  width: 100%;
  max-width: 460px;
  margin: 0 auto;
  aspect-ratio: 2 / 3;
  background: var(--velvet);
  box-shadow: 0 34px 50px -30px rgba(60, 30, 10, .65);
}
.profile__photo { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 22%; }
.profile::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(to bottom, rgba(22, 6, 9, 0) 34%, rgba(22, 6, 9, .45) 54%, rgba(22, 6, 9, .88) 78%, rgba(22, 6, 9, .96) 100%);
  pointer-events: none;
}
.profile::after { content: ""; position: absolute; inset: 10px 10px 22px; z-index: 2; border: 1px solid rgba(196, 162, 102, .5); pointer-events: none; }
.profile__text { position: absolute; left: 0; right: 0; bottom: 0; z-index: 3; padding: 0 30px 46px; color: var(--ivory); text-align: left; }
.profile__role { font-size: .64rem; letter-spacing: .38em; color: var(--gold); }
.profile__name {
  margin: .5rem 0 .75rem;
  font: 400 min(1.7rem, calc((min(100vw - 40px, 460px) - 60px) / 16.5)) / 1.25 var(--lx-display);
  color: var(--ivory);
  white-space: nowrap;
}
.profile__rule { display: block; height: 1px; margin-bottom: .85rem; background: linear-gradient(90deg, rgba(196, 162, 102, .85), rgba(196, 162, 102, 0)); }
.profile__lead { font-style: italic; font-size: .98rem; color: rgba(243, 235, 221, .78); }
.profile__parent { font-size: 1.04rem; line-height: 1.55; white-space: nowrap; }
.profile__and { font-family: var(--script); font-size: 1.5rem; line-height: 1.05; color: var(--gold); }
.profile__ulos { position: absolute; left: 0; right: 0; bottom: 0; z-index: 3; height: 12px; background: var(--umber) var(--ulos-h) repeat-x 0 50% / 10px 12px; }
.couple__join { display: flex; align-items: center; justify-content: center; gap: 16px; margin: 2.2rem 0 3.2rem; }
.couple__join::before, .couple__join::after { content: ""; width: 72px; height: 1px; background: linear-gradient(90deg, transparent, var(--gold-deep)); }
.couple__join::after { transform: scaleX(-1); }
.couple__join .script { font-size: 4rem; line-height: 1; }


/* ---------- poem ---------- */
.poem__photo { position: relative; }
.poem__photo img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.poem__photo::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, rgba(74, 18, 22, 0) 45%, var(--maroon-deep) 100%);
}
.poem__body { position: relative; padding: 0 26px 80px; text-align: center; margin-top: -54px; }
.poem__mark { font-family: var(--roman); font-size: 6rem; line-height: .7; height: 54px; color: var(--gold); }
.poem__text { margin: 1.25rem 0 2rem; }
.poem__text p { font-style: italic; font-size: clamp(1.02rem, 4.4vw, 1.2rem); line-height: 1.75; margin-bottom: 1.25rem; text-wrap: balance; }
.poem__sig { font-size: 2.1rem; margin-top: .9rem; padding: 0 .2em .2em; }

/* ---------- events ---------- */
.events__inner { padding: 40px 24px 120px; }
.events .head { margin-bottom: 1rem; }
.events__day { text-align: center; font-style: italic; font-size: 1.15rem; color: var(--ink-soft); }

.count { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin: 2.25rem 0 3.25rem; }
.count__unit {
  position: relative;
  text-align: center;
  padding: 1rem 0 .85rem;
  border: 1px solid rgba(142, 107, 52, .45);
  background: rgba(255, 252, 246, .6);
}
.count__unit::before { content: ""; position: absolute; inset: 3px; border: 1px solid rgba(142, 107, 52, .16); pointer-events: none; }
.count__unit b {
  display: block;
  font: 400 2rem/1 var(--roman);
  color: var(--maroon);
  font-variant-numeric: lining-nums tabular-nums;
}
.count__unit small { display: block; margin-top: .45rem; font-size: .88rem; font-style: italic; color: var(--ink-soft); }
.count.is-done { display: block; text-align: center; padding: 1.2rem; border: 1px solid rgba(142, 107, 52, .45); font-style: italic; font-size: 1.15rem; color: var(--ink); }

.ev {
  position: relative;
  text-align: center;
  padding: 2.5rem 1.5rem 2.25rem;
  border: 1px solid rgba(142, 107, 52, .42);
  background: rgba(255, 252, 246, .6);
  color: var(--ink);
}
.ev::before { content: ""; position: absolute; inset: 5px; border: 1px solid rgba(142, 107, 52, .16); pointer-events: none; }
.ev::after {
  content: "";
  position: absolute;
  inset: -5px;
  pointer-events: none;
  background:
    var(--dia) 0 0 / 10px no-repeat,
    var(--dia) 100% 0 / 10px no-repeat,
    var(--dia) 0 100% / 10px no-repeat,
    var(--dia) 100% 100% / 10px no-repeat;
}
.ev + .ev { margin-top: 2rem; }
.ev__icon { color: var(--gold-deep); display: flex; justify-content: center; margin-bottom: 1rem; }
.ev__title { font-size: 1.25rem; color: var(--ink); margin-bottom: .9rem; }
.ev__time { margin-top: 1rem; font-style: italic; }
.ev__time b { display: block; font: 400 2.6rem/1.05 var(--roman); font-style: normal; color: var(--maroon); font-variant-numeric: lining-nums; }
.ev__tz { margin-left: .28em; font-size: .46em; letter-spacing: .12em; }
.ev__place { margin-top: 1.1rem; font-weight: 500; color: var(--ink); font-size: 1.1rem; }
.ev__addr { color: var(--ink-soft); max-width: 30ch; margin: .2rem auto 0; }
.ev--maroon {
  background:
    var(--grain-light),
    radial-gradient(120% 70% at 50% 0%, rgba(140, 40, 46, .55) 0%, rgba(140, 40, 46, 0) 60%),
    var(--maroon-deep);
  border-color: var(--gold-soft);
  color: var(--ivory);
}
.ev--maroon::before { border-color: rgba(196, 162, 102, .22); }
.ev--maroon .ev__title, .ev--maroon .ev__place { color: var(--ivory); }
.ev--maroon .ev__time b { color: var(--gold); }
.ev--maroon .ev__addr { color: var(--bone); }
.ev__acts { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; gap: .9rem; margin-top: 1.6rem; }

/* ---------- gallery carousel ---------- */
.gallery { padding: 112px 0 104px; overflow: hidden; }
.car { position: relative; container-type: inline-size; }
.car__track {
  position: relative;
  display: flex;
  gap: 16px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  overscroll-behavior-x: contain;
  -webkit-overflow-scrolling: touch;
  padding: 26px 17vw 34px;
  padding: 26px 17cqw 34px;
  outline: none;
}
.car__track::-webkit-scrollbar { display: none; }
.car__slide {
  --a: 1;
  position: relative;
  flex: none;
  width: 66vw;
  width: 66cqw;
  margin: 0;
  scroll-snap-align: center;
  transform: scale(calc(1 - var(--a) * .12));
}
.car__btn { display: block; width: 100%; padding: 0; border: 0; background: var(--paper-2); cursor: pointer; position: relative; }
.car__img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.car__btn::after {
  content: "";
  position: absolute;
  inset: 0;
  background: #24140c;
  opacity: calc(var(--a) * .45);
  pointer-events: none;
}
.car__slide::before, .car__slide::after {
  content: "";
  position: absolute;
  pointer-events: none;
  opacity: calc(1 - var(--a));
}
.car__slide::before { inset: -11px; border: 1px solid var(--gold-deep); }
.car__slide::after {
  inset: -16px;
  background:
    var(--dia) 0 0 / 10px no-repeat,
    var(--dia) 100% 0 / 10px no-repeat,
    var(--dia) 0 100% / 10px no-repeat,
    var(--dia) 100% 100% / 10px no-repeat;
}
.car__meta { display: flex; align-items: center; gap: 14px; padding: 0 28px; margin-top: .25rem; }
.car__nav {
  flex: none;
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border: 1px solid var(--gold-deep);
  border-radius: 50%;
  background: transparent;
  color: var(--ink);
  cursor: pointer;
  transition: background-color .2s, color .2s;
}
.car__nav:hover { background: var(--ink); color: var(--ivory); }
.car__num { flex: none; font-family: var(--roman); font-variant-numeric: lining-nums tabular-nums; }
.car__num b { font-weight: 400; font-size: 1.5rem; }
.car__num span { margin-left: .35rem; font-size: .95rem; color: var(--ink-soft); }
.car__bar { flex: 1; height: 1px; background: var(--line); position: relative; }
.car__bar i { position: absolute; left: 0; top: -1px; height: 3px; width: 0; background: var(--foil-deep); transition: width .45s ease; }
.car__thumbs {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  scrollbar-width: none;
  padding: 22px 28px 6px;
}
.car__thumbs::-webkit-scrollbar { display: none; }
.car__thumb {
  flex: none;
  width: 52px;
  height: 64px;
  padding: 0;
  border: 0;
  background: var(--paper-2);
  opacity: .5;
  cursor: pointer;
  outline: 1px solid transparent;
  outline-offset: 3px;
  transition: opacity .3s, outline-color .3s;
}
.car__thumb img { width: 100%; height: 100%; object-fit: cover; }
.car__thumb.is-on { opacity: 1; outline-color: var(--gold-deep); }
.car__hint { text-align: center; font-style: italic; font-size: .92rem; color: var(--ink-soft); margin-top: 1.1rem; }

/* ---------- lightbox ---------- */
.lb {
  position: fixed;
  inset: 0;
  z-index: 80;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(22, 12, 9, .97);
  color: var(--ivory);
  touch-action: pan-y;
}
.lb__img { max-width: 94vw; max-height: 82vh; max-height: 82svh; object-fit: contain; box-shadow: 0 30px 60px -30px #000; }
.lb__btn { position: absolute; display: grid; place-items: center; width: 48px; height: 48px; border: 0; background: transparent; color: inherit; cursor: pointer; }
.lb__close { top: max(10px, env(safe-area-inset-top)); right: 10px; }
.lb__prev { left: 6px; top: 50%; transform: translateY(-50%); }
.lb__next { right: 6px; top: 50%; transform: translateY(-50%); }
.lb__count { position: absolute; bottom: max(20px, env(safe-area-inset-bottom)); left: 0; right: 0; text-align: center; font-family: var(--roman); letter-spacing: .12em; font-size: .9rem; opacity: .8; }

/* ---------- rsvp & wishes ---------- */
.rsvp { padding: 120px 22px 120px; }
.rsvp__lead { text-align: center; max-width: 32ch; margin: -1rem auto 2.25rem; }
/* the RSVP card is framed like an ulos: woven bands top and bottom, narrow selvedges, fringe below */
.card {
  position: relative;
  padding: calc(22px + 2rem) calc(12px + 1.4rem) calc(22px + 1.8rem);
  background:
    var(--ulos-h) repeat-x 0 0 / 18px 22px,
    var(--ulos-h) repeat-x 0 100% / 18px 22px,
    var(--ulos-v) repeat-y 0 0 / 12px 9.9px,
    var(--ulos-v) repeat-y 100% 0 / 12px 9.9px,
    var(--ivory);
  box-shadow: 0 30px 50px -34px rgba(60, 30, 10, .6);
}
.card::before { content: ""; position: absolute; inset: 22px 12px; border: 1px solid rgba(142, 107, 52, .55); pointer-events: none; }
.card::after { content: ""; position: absolute; inset: 28px 18px; border: 1px solid rgba(142, 107, 52, .2); pointer-events: none; }
.card__fringe { position: absolute; left: 6px; right: 6px; top: 100%; }
.form { position: relative; display: grid; gap: 1.5rem; }
.field { display: grid; gap: .3rem; margin: 0; padding: 0; border: 0; min-width: 0; }
.field__label { font-family: var(--roman); font-size: .72rem; letter-spacing: .2em; text-transform: uppercase; color: var(--gold-deep); padding: 0; }
.field__input {
  width: 100%;
  border: 0;
  border-bottom: 1px solid rgba(78, 48, 22, .45);
  border-radius: 0;
  background: transparent;
  color: var(--ink);
  font: 1.08rem/1.5 var(--serif);
  padding: .45rem 0;
  -webkit-appearance: none;
  appearance: none;
}
select.field__input {
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%238E6B34' stroke-width='1.2'/%3E%3C/svg%3E") no-repeat right 4px center;
  padding-right: 24px;
}
textarea.field__input { resize: vertical; min-height: 104px; }
.field__input:focus { outline: none; border-bottom-color: var(--maroon); box-shadow: 0 1px 0 var(--maroon); }
.field--choice .field__label { margin-bottom: .55rem; }
.choice { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.choice__opt { position: relative; }
.choice__opt input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.choice__opt span {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 46px;
  border: 1px solid rgba(78, 48, 22, .4);
  transition: background-color .2s, color .2s, border-color .2s;
}
.choice__opt input:checked + span { background: var(--maroon); border-color: var(--maroon); color: var(--ivory); }
.choice__opt input:focus-visible + span { outline: 2px solid var(--gold-deep); outline-offset: 2px; }
.form__err { min-height: 1.2em; margin-top: -.75rem; color: var(--maroon); font-style: italic; font-size: .98rem; }
.form .btn { width: 100%; }

.wishes { margin-top: 3rem; }
.wishes__count { display: flex; align-items: center; gap: 12px; font-family: var(--roman); font-size: .78rem; letter-spacing: .22em; text-transform: uppercase; color: var(--gold-deep); margin-bottom: 1rem; }
.wishes__count::after { content: ""; flex: 1; height: 1px; background: rgba(142, 107, 52, .35); }
.wishes__count.is-note { display: block; font-family: var(--serif); font-style: italic; font-size: 1rem; letter-spacing: 0; text-transform: none; color: var(--ink-soft); text-align: center; }
.wishes__count.is-note::after { display: none; }
.wishes__list {
  list-style: none;
  margin: 0;
  padding: 0;
  max-height: 560px;
  overflow-y: auto;
  display: grid;
  gap: 10px;
  scrollbar-width: thin;
  scrollbar-color: rgba(142, 107, 52, .45) transparent;
}
.wish { position: relative; padding: 1rem 1.1rem 1.1rem 1.25rem; background: rgba(244, 238, 230, .8); border-left: 2px solid var(--gold-deep); }
.wish__name { font-family: var(--roman); font-size: 1.02rem; line-height: 1.35; letter-spacing: .04em; overflow-wrap: anywhere; }
.wish__meta { font-size: .88rem; font-style: italic; color: var(--ink-soft); }
.wish__msg { margin-top: .4rem; white-space: pre-line; overflow-wrap: anywhere; }
.wishes .btn { margin-top: 1.25rem; width: 100%; }

/* ---------- gift ---------- */
.gift { padding: 120px 24px 120px; }
.gift__lead { text-align: center; max-width: 33ch; margin: -1rem auto 2.5rem; }
.accts { display: grid; gap: 2.5rem; }
.acct { display: flex; flex-direction: column; align-items: center; gap: 1.1rem; }
.bcard {
  position: relative;
  width: min(100%, 340px);
  aspect-ratio: 1.586;
  padding: 1.25rem 1.35rem;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  color: var(--ivory);
  border: 1px solid rgba(196, 162, 102, .6);
  box-shadow: 0 28px 44px -26px rgba(0, 0, 0, .8);
}
.bcard::before { content: ""; position: absolute; inset: 5px; border: 1px solid rgba(196, 162, 102, .22); pointer-events: none; }
.bcard::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 12px; background: var(--umber) var(--ulos-h) repeat-x 0 50% / 20px 24px; }
.bcard--noir { background: var(--grain-light), radial-gradient(130% 120% at 0% 0%, #43302A 0%, #22160F 55%, #100A07 100%); }
.bcard--umber { background: var(--grain-light), radial-gradient(130% 120% at 0% 0%, #6A4A2E 0%, #3E2A1C 55%, #231710 100%); }
.bcard__row { display: flex; justify-content: space-between; align-items: center; }
.bcard__bank { font-size: 1rem; letter-spacing: .26em; color: var(--gold); }
.bcard__chip {
  width: 38px;
  height: 28px;
  border-radius: 5px;
  background: var(--foil);
  box-shadow: inset 0 0 0 1px rgba(90, 60, 20, .35);
  position: relative;
}
.bcard__chip::before { content: ""; position: absolute; inset: 7px 0; border-top: 1px solid rgba(90, 60, 20, .45); border-bottom: 1px solid rgba(90, 60, 20, .45); }
.bcard__chip::after { content: ""; position: absolute; inset: 0 13px; border-left: 1px solid rgba(90, 60, 20, .45); border-right: 1px solid rgba(90, 60, 20, .45); }
.bcard__no { margin-top: auto; font: 400 1.5rem/1.2 var(--roman); letter-spacing: .12em; font-variant-numeric: lining-nums tabular-nums; }
.bcard__name { font-style: italic; opacity: .85; margin: .2rem 0 .9rem; }
.bcard__mono { position: absolute; right: 18px; bottom: 26px; width: 34px; opacity: .85; }

/* ---------- closing ---------- */
.closing__inner { padding: 112px 32px 104px; text-align: center; display: flex; flex-direction: column; align-items: center; }
.closing .window { margin: 16px auto 3.2rem; }
.closing__lead { width: 100%; max-width: 30rem; font-size: 1.08rem; line-height: 1.8; text-align: justify; text-align-last: center; word-spacing: -.02em; }
.closing__bless { margin: 1.4rem 0 1.4rem; font-style: italic; color: var(--gold); font-size: 1.1rem; }
.closing__sig { margin-top: 1.6rem; font-size: .98rem; opacity: .8; }
.closing__names { font-size: clamp(3rem, 14vw, 4rem); margin: .3rem 0 calc(1.1rem - .3em); padding: 0 .15em .3em; }
.closing__fam { font-size: .98rem; line-height: 1.6; opacity: .92; }
.closing__fam p { white-space: nowrap; }
.closing__and { font-family: var(--script); font-size: 1.6rem; line-height: 1.15; color: var(--gold); }
.closing__fam + .closing__fam { margin-top: 1.5rem; }
.closing__mono { width: 92px; margin-top: 3rem; }

.credit { text-align: center; font-size: .88rem; color: var(--ink-soft); padding: 0 20px 120px; }
.credit .fringe { margin-bottom: 26px; }
.credit a { color: var(--ink); text-underline-offset: 3px; }

/* ---------- dock ---------- */
.dock {
  position: fixed;
  z-index: 40;
  left: 50%;
  bottom: max(12px, env(safe-area-inset-bottom));
  display: flex;
  gap: 2px;
  padding: 6px;
  background: rgba(53, 11, 14, .86);
  -webkit-backdrop-filter: blur(12px) saturate(1.2);
  backdrop-filter: blur(12px) saturate(1.2);
  border: 1px solid rgba(196, 162, 102, .45);
  box-shadow: 0 16px 36px -18px rgba(0, 0, 0, .7);
  transform: translate(-50%, 140%);
  transition: transform .6s cubic-bezier(.2, .7, .2, 1) .9s;
}
.opened .dock { transform: translate(-50%, 0); }
.no-js .dock { display: none; }
.dock__a {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
  width: 54px;
  padding: 6px 0 5px;
  color: rgba(242, 236, 229, .72);
  text-decoration: none;
  transition: color .25s, background-color .25s;
}
.dock__a svg { width: 21px; height: 21px; fill: none; stroke: currentColor; stroke-width: 1.2; stroke-linejoin: round; }
.dock__a span { font-size: .64rem; line-height: 1; letter-spacing: .02em; }
.dock__a.is-on { color: var(--gold); background: rgba(196, 162, 102, .12); }
body.lb-open .dock, body.lb-open .lux-disc { visibility: hidden; }

/* ---------- toast ---------- */
.toast {
  position: fixed;
  left: 50%;
  bottom: calc(max(12px, env(safe-area-inset-bottom)) + 84px);
  z-index: 90;
  transform: translate(-50%, 16px);
  max-width: calc(100vw - 32px);
  padding: .7rem 1.2rem;
  background: var(--ink);
  color: var(--ivory);
  font-size: .98rem;
  border: 1px solid rgba(196, 162, 102, .5);
  opacity: 0;
  pointer-events: none;
  transition: opacity .25s, transform .25s;
}
.toast.show { opacity: 1; transform: translate(-50%, 0); }

/* ---------- scroll reveals (once) ---------- */
.js .rv { opacity: 0; transform: translateY(22px); filter: blur(3px); transition: opacity 1s ease, transform 1.1s cubic-bezier(.2, .7, .2, 1), filter 1s ease; }
.js .rv.in { opacity: 1; transform: none; filter: none; }
.js .rv-img img { clip-path: inset(100% 0 0 0 round 999px 999px 0 0); transition: clip-path 1.5s cubic-bezier(.65, 0, .25, 1); }
.js .rv-img::before, .js .rv-img::after { transform: scale(.94); opacity: 0; transition: transform 1.4s ease .5s, opacity 1.4s ease .5s; }
.js .rv-img.in img { clip-path: inset(0 0 0 0 round 999px 999px 0 0); }
.js .rv-img.in::before { transform: none; opacity: .7; }
.js .rv-img.in::after { transform: none; opacity: .3; }

/* ---------- wider screens ---------- */
@media (min-width: 900px) {
  .cover__photo img {
    left: auto;
    right: 7vw;
    top: 50%;
    bottom: auto;
    width: auto;
    height: 80%;
    max-height: none;
    aspect-ratio: 1024 / 1536;
    transform: translateY(-50%);
    -webkit-mask-image: none;
    mask-image: none;
    outline: 1px solid rgba(196, 162, 102, .55);
    outline-offset: 12px;
    box-shadow: 0 40px 70px -30px rgba(0, 0, 0, .8);
  }
  .cover__panel::after {
    background: linear-gradient(to right, rgba(30, 6, 8, .82) 0%, rgba(30, 6, 8, .45) 30%, rgba(30, 6, 8, 0) 52%);
  }
  .cover__frame { inset: 22px 22px 56px; }
  .cover__body {
    align-items: flex-start;
    justify-content: center;
    text-align: left;
    padding: 0 0 0 8vw;
    max-width: 46vw;
  }
  .cover__names { font-size: clamp(3.6rem, 5vw, 5.4rem); margin-left: -.05em; }
  .cover__date { justify-content: flex-start; }
  .cover__bottom { margin-top: 3.5rem; }
  .cover__guest { padding-left: 0; padding-right: 2rem; }

  .layout { display: grid; grid-template-columns: minmax(0, 1fr) 34px 540px; }
  .side {
    display: block;
    position: sticky;
    top: 0;
    height: 100vh;
    height: 100svh;
    overflow: hidden;
    background: var(--velvet);
  }
  .side img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 30%; }
  .side::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(30, 8, 8, .85), rgba(30, 8, 8, 0) 45%); }
  .side__frame { z-index: 2; inset: 24px; }
  .side__cap { position: absolute; left: 64px; right: 64px; bottom: 64px; z-index: 3; color: var(--ivory); }
  .side__kicker { font-size: .72rem; letter-spacing: .34em; color: var(--gold); }
  .side__names { font-size: clamp(3.6rem, 5vw, 5.2rem); margin: .4rem 0 calc(.6rem - .3em) -.05em; padding: 0 .2em .3em 0; }
  .side__date { font-family: var(--roman); letter-spacing: .14em; font-size: .9rem; opacity: .85; }
  .selvedge { display: block; position: sticky; top: 0; height: 100vh; height: 100svh; background: var(--umber) var(--ulos-v) repeat-y 0 0 / 34px 28px; }

  .car__slide { width: 62cqw; }
  .car__track { padding-left: 19cqw; padding-right: 19cqw; }
  .dock { left: auto; right: 96px; transform: translate(0, 140%); }
  .opened .dock { transform: translate(0, 0); }
}

@media (min-width: 1400px) {
  .layout { grid-template-columns: minmax(0, 1fr) 34px 580px; }
  .dock { right: 116px; }
}

@media (hover: none) {
  .car__nav:hover { background: transparent; color: var(--ink); }
  .btn--line:hover, .btn--line-gold:hover { background: transparent; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .js .cover { transition: opacity .45s ease; }
  .cover.is-open { transform: none; opacity: 0; }
  .cover.is-open .fringe { animation: none; }
  .js .rv { transform: none; filter: none; transition: opacity .6s ease; }
  .js .rv-photo { transform: none; transition: opacity .6s ease; }
  .js .rv-img img { clip-path: none; transition: none; }
  .js .rv-img::before, .js .rv-img::after { transform: none; transition: opacity .6s ease; }
  .dock { transition: none; }
}

/* =====================================================================
   Borrowed from the v2 edition: the gold-filling logo loader, the
   full-bleed photo hero ("page 1") and the vinyl music disc.
   Namespaced lux-* so they never collide with the classic styles.
   ===================================================================== */
:root {
  --lx-gold: #D6B36A;
  --lx-gold-hi: #F6E7BE;
  --lx-gold-a: rgba(214, 179, 106, .5);
  --lx-ivory: #F3EBDD;
  --lx-ivory-2: rgba(243, 235, 221, .74);
  --lx-noir: #12040A;
  --lx-display: "Bodoni Moda", "Didot", "Bodoni 72", Georgia, serif;
  --lx-sans: "Jost", "Futura", "Avenir Next", system-ui, sans-serif;
  --lx-ease: cubic-bezier(.2, .7, .2, 1);
  --lx-foil: linear-gradient(110deg, #9A7433 0%, #D6B36A 18%, #F6E7BE 33%, #C9A45C 48%, #EBD39A 64%, #A57E3C 82%, #DCBD7A 100%);
}
@keyframes lux-foil { 0%, 100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } }

/* loader */
.lux-pre {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: grid;
  place-content: center;
  justify-items: center;
  gap: 26px;
  background: radial-gradient(ellipse at center, #2A0A10 0%, #0B0306 72%);
  transition: opacity 1s ease .15s, visibility 0s linear 1.2s;
}
.lux-pre.done { opacity: 0; visibility: hidden; }
.no-js .lux-pre { display: none; }
.lux-pre__mono { position: relative; width: 92px; aspect-ratio: 711 / 872; }
.lux-pre__base, .lux-pre__fill { position: absolute; inset: 0; }
.lux-pre__base { background: rgba(214, 179, 106, .16); }
.lux-pre__fill { background: var(--lx-foil); background-size: 220% 100%; animation: lux-foil 3s ease-in-out infinite; clip-path: inset(calc(100% - var(--p, 0%)) 0 0 0); }
.lux-pre__pct { font: 400 .72rem/1 var(--lx-sans); letter-spacing: .5em; padding-left: .5em; color: var(--lx-gold); font-variant-numeric: tabular-nums; }
.js .cover__body { opacity: 0; }
.ready .cover__body { opacity: 1; transition: opacity 1.2s ease .35s; }

/* page 1: full-bleed photo hero */
.lux-hero { position: relative; height: 100vh; height: 100svh; min-height: 560px; overflow: hidden; background: var(--lx-noir); color: var(--lx-ivory); }
.lux-hero__media, .lux-hero__par { position: absolute; inset: 0; }
.lux-hero__par { will-change: transform; }
.lux-hero__par picture, .lux-hero__par img { display: block; width: 100%; height: 100%; }
.lux-hero__par img { object-fit: cover; object-position: 50% 28%; }
.js .lux-hero__media { transform: scale(1.28); filter: brightness(.3); }
.opened .lux-hero__media { transform: none; filter: none; transition: transform 3.6s var(--lx-ease) .35s, filter 3.6s var(--lx-ease) .35s; }
.lux-hero__shade {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(to bottom, rgba(18, 4, 10, .6) 0%, rgba(18, 4, 10, 0) 26%, rgba(18, 4, 10, .15) 52%, rgba(18, 4, 10, .94) 100%),
    radial-gradient(ellipse at center, transparent 50%, rgba(18, 4, 10, .5) 100%);
}
.lux-hero__leak {
  position: absolute;
  inset: -20%;
  pointer-events: none;
  mix-blend-mode: screen;
  background:
    radial-gradient(38% 32% at 22% 22%, rgba(255, 196, 130, .26), transparent 70%),
    radial-gradient(34% 30% at 84% 72%, rgba(220, 120, 80, .16), transparent 70%);
  animation: lux-leak 16s ease-in-out infinite alternate;
}
@keyframes lux-leak { from { transform: translate(-4%, -2%) scale(1); } to { transform: translate(5%, 4%) scale(1.16); } }
.lux-hero__content { position: absolute; left: 0; right: 0; bottom: max(20vh, 160px); z-index: 2; text-align: center; padding: 0 20px; }
.lux-kicker { font: 500 .66rem/1.4 var(--lx-sans); letter-spacing: .5em; padding-left: .5em; text-transform: uppercase; color: var(--lx-gold); }
.lux-foil {
  background: var(--lx-foil);
  background-size: 220% 100%;
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  -webkit-text-fill-color: transparent;
  animation: lux-foil 7s ease-in-out infinite;
}
.lux-hero__names { font-size: clamp(3.5rem, 16vw, 7.6rem); line-height: 1.12; white-space: nowrap; margin: .5rem 0 calc(.5rem - .3em); padding: 0 .16em .3em; filter: drop-shadow(0 8px 24px rgba(0, 0, 0, .55)); }
.lux-hero__date { font: italic 400 1.35rem/1.3 var(--lx-display); }
.lux-hero__city { margin-top: .6rem; font: 500 .64rem/1 var(--lx-sans); letter-spacing: .46em; padding-left: .46em; text-transform: uppercase; color: var(--lx-ivory-2); }
.lux-hero__cue {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 86px;
  z-index: 2;
  width: max-content;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  color: var(--lx-ivory-2);
  text-decoration: none;
  font: 500 .58rem/1 var(--lx-sans);
  letter-spacing: .44em;
  padding-left: .44em;
  text-transform: uppercase;
}
.lux-hero__cue i { position: relative; width: 1px; height: 40px; overflow: hidden; background: linear-gradient(var(--lx-gold-a), transparent); }
.lux-hero__cue i::after { content: ""; position: absolute; left: -1px; top: -14px; width: 3px; height: 14px; background: var(--lx-gold-hi); animation: lux-cue 2.2s ease-in-out infinite; }
@keyframes lux-cue { to { transform: translateY(60px); } }

/* the names write themselves in, then the rest follows */
.js .lux-write {
  -webkit-mask-image: linear-gradient(90deg, #000 0 40%, transparent 60% 100%);
  mask-image: linear-gradient(90deg, #000 0 40%, transparent 60% 100%);
  -webkit-mask-size: 300% 100%;
  mask-size: 300% 100%;
  -webkit-mask-position: 100% 0;
  mask-position: 100% 0;
}
.opened .lux-write { -webkit-mask-position: 0 0; mask-position: 0 0; transition: -webkit-mask-position 2.6s cubic-bezier(.45, .05, .25, 1) 1.1s, mask-position 2.6s cubic-bezier(.45, .05, .25, 1) 1.1s; }
.js .lux-in { opacity: 0; transform: translateY(18px); filter: blur(6px); }
.opened .lux-in { opacity: 1; transform: none; filter: none; transition: opacity 1.3s var(--lx-ease), transform 1.3s var(--lx-ease), filter 1.3s var(--lx-ease); }
.opened .lux-kicker.lux-in { transition-delay: 1.5s; }
.opened .lux-hero__date.lux-in { transition-delay: 1.85s; }
.opened .lux-hero__city.lux-in { transition-delay: 2s; }
.opened .lux-hero__cue.lux-in { transition-delay: 2.3s; }

/* vinyl disc music control */
.lux-disc {
  position: fixed;
  z-index: 45;
  top: max(14px, env(safe-area-inset-top));
  right: 14px;
  width: 48px;
  height: 48px;
  padding: 0;
  border-radius: 50%;
  border: 1px solid var(--lx-gold-a);
  background: #0D0306;
  cursor: pointer;
  box-shadow: 0 12px 26px -12px rgba(0, 0, 0, .9);
}
.lux-disc__vinyl {
  position: absolute;
  inset: 3px;
  border-radius: 50%;
  background:
    radial-gradient(circle, transparent 30%, rgba(214, 179, 106, .12) 31%, transparent 33%),
    repeating-radial-gradient(circle, #140609 0 1.5px, #22090E 1.5px 3px);
  animation: lux-spin 7s linear infinite;
  animation-play-state: paused;
}
.lux-disc.is-playing .lux-disc__vinyl { animation-play-state: running; }
.lux-disc__mono { position: absolute; left: 50%; top: 50%; width: 38%; transform: translate(-50%, -50%); background: var(--lx-foil); }
.lux-disc:not(.is-playing) { opacity: .75; }
@keyframes lux-spin { to { transform: rotate(360deg); } }

@media (min-width: 900px) {
  .lux-hero__par img { object-position: 50% 35%; }
  .lux-hero__shade {
    background:
      linear-gradient(to right, rgba(18, 4, 10, .78) 0%, rgba(18, 4, 10, .35) 32%, rgba(18, 4, 10, 0) 55%),
      linear-gradient(to bottom, rgba(18, 4, 10, .5) 0%, rgba(18, 4, 10, 0) 25%, rgba(18, 4, 10, 0) 70%, rgba(18, 4, 10, .9) 100%);
  }
  .lux-hero__content { inset: 0; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; text-align: left; padding: 0 0 0 8vw; }
  .lux-hero__names { font-size: clamp(4rem, 5.2vw, 5.6rem); margin-left: -.1em; }
  .lux-hero__city { padding-left: 0; }
  .lux-disc { top: 20px; right: 22px; }
}

@media (prefers-reduced-motion: reduce) {
  .lux-pre__fill, .lux-foil, .lux-hero__leak, .lux-hero__cue i::after, .lux-disc__vinyl { animation: none !important; }
  .js .lux-hero__media { transform: none; filter: none; }
  .js .lux-write { -webkit-mask-image: none; mask-image: none; }
  .js .lux-in { transform: none; filter: none; }
  .opened .lux-in { transition: opacity .6s ease; }
}

/* =====================================================================
   Modern Batak accents: gorga spirals, ipon-ipon teeth, ulos hems and a
   rumah bolon, kept thin so the page stays calm.
   ===================================================================== */
.bk-corners { position: relative; isolation: isolate; }
.bk-corners::before, .bk-corners::after {
  content: "";
  position: absolute;
  top: 16px;
  z-index: -1;
  width: 104px;
  height: 104px;
  background: var(--gorga-corner) no-repeat 0 0 / contain;
  opacity: .75;
  pointer-events: none;
}
.bk-corners::before { left: 14px; }
.bk-corners::after { right: 14px; transform: scaleX(-1); }
.bk-corners--gold::before, .bk-corners--gold::after { background-image: var(--gorga-corner-gold); opacity: .6; }

/* page 1 ends in a woven hem, its fringe hangs over the first ivory section */
.lux-hero__hem { position: absolute; left: 0; right: 0; bottom: 0; z-index: 3; }
.intro { position: relative; }
.intro__fringe { position: absolute; top: 0; left: 0; right: 0; }


/* Resepsi Adat: the ulos portrait, whole, as a print */
.ev__photo {
  width: min(78%, 270px);
  margin: .3rem auto 1.5rem;
  padding: 7px 7px 21px;
  background: var(--ulos-h) repeat-x 0 100% / 11px 13px, #FBF8F3;
  box-shadow: 0 24px 36px -22px rgba(0, 0, 0, .85);
}
.ev__photo img { width: 100%; height: auto; }

/* a faint rumah bolon stands behind the event heading */
.events__inner { position: relative; isolation: isolate; }
.events__house {
  position: absolute;
  top: -8px;
  left: 50%;
  z-index: -1;
  width: 250px;
  height: 111px;
  margin-left: -125px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='280' height='124' viewBox='0 0 280 124' fill='none'%3E%3Cpath d='M10 20H270M10 104H270' stroke='%238E6B34' stroke-width='.9'/%3E%3Cpath d='M14 17L20 7L26 17M26 17L32 7L38 17M38 17L44 7L50 17M50 17L56 7L62 17M62 17L68 7L74 17M74 17L80 7L86 17M86 17L92 7L98 17M98 17L104 7L110 17M110 17L116 7L122 17M122 17L128 7L134 17M134 17L140 7L146 17M146 17L152 7L158 17M158 17L164 7L170 17M170 17L176 7L182 17M182 17L188 7L194 17M194 17L200 7L206 17M206 17L212 7L218 17M218 17L224 7L230 17M230 17L236 7L242 17M242 17L248 7L254 17M254 17L260 7L266 17M14 107L20 117L26 107M26 107L32 117L38 107M38 107L44 117L50 107M50 107L56 117L62 107M62 107L68 117L74 107M74 107L80 117L86 107M86 107L92 117L98 107M98 107L104 117L110 107M110 107L116 117L122 107M122 107L128 117L134 107M134 107L140 117L146 107M146 107L152 117L158 107M158 107L164 117L170 107M170 107L176 117L182 107M182 107L188 117L194 107M194 107L200 117L206 107M206 107L212 117L218 107M218 107L224 117L230 107M230 107L236 117L242 107M242 107L248 117L254 107M254 107L260 117L266 107' stroke='%238E6B34' stroke-width='.8' stroke-linejoin='round'/%3E%3Cpath d='M114.00 62.00L140.00 30.00L166.00 62.00L140.00 94.00ZM123.00 62.00L140.00 41.00L157.00 62.00L140.00 83.00Z' stroke='%238E6B34' stroke-width='1'/%3E%3Cpath d='M133.00 62.00L140.00 53.00L147.00 62.00L140.00 71.00Z' fill='%236B1F24'/%3E%3Cpath d='M111.00 48.00 L110.77 46.61 L110.40 45.27 L109.89 44.00 L109.26 42.80 L108.50 41.69 L107.64 40.68 L106.68 39.79 L105.65 39.01 L104.55 38.36 L103.40 37.84 L102.22 37.46 L101.01 37.20 L99.81 37.09 L98.61 37.10 L97.44 37.25 L96.30 37.52 L95.22 37.90 L94.20 38.40 L93.25 39.00 L92.39 39.68 L91.62 40.45 L90.95 41.28 L90.38 42.17 L89.92 43.10 L89.56 44.07 L89.33 45.05 L89.20 46.03 L89.18 47.01 L89.27 47.97 L89.46 48.90 L89.75 49.78 L90.12 50.62 L90.58 51.40 L91.11 52.11 L91.71 52.74 L92.36 53.30 L93.06 53.77 L93.79 54.15 L94.54 54.45 L95.31 54.65 L96.08 54.77 L96.85 54.80 L97.60 54.75 L98.32 54.61 L99.01 54.40 L99.66 54.12 L100.26 53.78 L100.81 53.38 L101.30 52.93 L101.73 52.44 L102.09 51.92 L102.38 51.37 L102.60 50.81 L102.76 50.24 L102.85 49.67 L102.87 49.11 L102.83 48.56 L102.73 48.03 L102.57 47.54 L102.37 47.07 L102.12 46.65 L101.83 46.26 L101.51 45.93 L101.16 45.64 L100.79 45.40 L100.41 45.21 L100.02 45.07 L99.64 44.97 L99.25 44.93 L98.88 44.93 L98.52 44.98 L98.18 45.06 L97.87 45.18 L97.59 45.33 L97.33 45.51 L97.11 45.70 L96.92 45.92 L96.77 46.14 L96.65 46.38 L96.56 46.61 L96.51 46.84 L96.49 47.07 L96.49 47.29 L96.53 47.49 L96.58 47.67 L96.66 47.84 L96.75 47.99 L96.84 48.11 L96.95 48.22 L97.05 48.31' stroke='%238E6B34' stroke-width='1.1' stroke-linecap='round'/%3E%3Cpath d='M169.00 48.00 L169.23 46.61 L169.60 45.27 L170.11 44.00 L170.74 42.80 L171.50 41.69 L172.36 40.68 L173.32 39.79 L174.35 39.01 L175.45 38.36 L176.60 37.84 L177.78 37.46 L178.99 37.20 L180.19 37.09 L181.39 37.10 L182.56 37.25 L183.70 37.52 L184.78 37.90 L185.80 38.40 L186.75 39.00 L187.61 39.68 L188.38 40.45 L189.05 41.28 L189.62 42.17 L190.08 43.10 L190.44 44.07 L190.67 45.05 L190.80 46.03 L190.82 47.01 L190.73 47.97 L190.54 48.90 L190.25 49.78 L189.88 50.62 L189.42 51.40 L188.89 52.11 L188.29 52.74 L187.64 53.30 L186.94 53.77 L186.21 54.15 L185.46 54.45 L184.69 54.65 L183.92 54.77 L183.15 54.80 L182.40 54.75 L181.68 54.61 L180.99 54.40 L180.34 54.12 L179.74 53.78 L179.19 53.38 L178.70 52.93 L178.27 52.44 L177.91 51.92 L177.62 51.37 L177.40 50.81 L177.24 50.24 L177.15 49.67 L177.13 49.11 L177.17 48.56 L177.27 48.03 L177.43 47.54 L177.63 47.07 L177.88 46.65 L178.17 46.26 L178.49 45.93 L178.84 45.64 L179.21 45.40 L179.59 45.21 L179.98 45.07 L180.36 44.97 L180.75 44.93 L181.12 44.93 L181.48 44.98 L181.82 45.06 L182.13 45.18 L182.41 45.33 L182.67 45.51 L182.89 45.70 L183.08 45.92 L183.23 46.14 L183.35 46.38 L183.44 46.61 L183.49 46.84 L183.51 47.07 L183.51 47.29 L183.47 47.49 L183.42 47.67 L183.34 47.84 L183.25 47.99 L183.16 48.11 L183.05 48.22 L182.95 48.31' stroke='%238E6B34' stroke-width='1.1' stroke-linecap='round'/%3E%3Cpath d='M69.00 76.00 L68.77 77.39 L68.40 78.73 L67.89 80.00 L67.26 81.20 L66.50 82.31 L65.64 83.32 L64.68 84.21 L63.65 84.99 L62.55 85.64 L61.40 86.16 L60.22 86.54 L59.01 86.80 L57.81 86.91 L56.61 86.90 L55.44 86.75 L54.30 86.48 L53.22 86.10 L52.20 85.60 L51.25 85.00 L50.39 84.32 L49.62 83.55 L48.95 82.72 L48.38 81.83 L47.92 80.90 L47.56 79.93 L47.33 78.95 L47.20 77.97 L47.18 76.99 L47.27 76.03 L47.46 75.10 L47.75 74.22 L48.12 73.38 L48.58 72.60 L49.11 71.89 L49.71 71.26 L50.36 70.70 L51.06 70.23 L51.79 69.85 L52.54 69.55 L53.31 69.35 L54.08 69.23 L54.85 69.20 L55.60 69.25 L56.32 69.39 L57.01 69.60 L57.66 69.88 L58.26 70.22 L58.81 70.62 L59.30 71.07 L59.73 71.56 L60.09 72.08 L60.38 72.63 L60.60 73.19 L60.76 73.76 L60.85 74.33 L60.87 74.89 L60.83 75.44 L60.73 75.97 L60.57 76.46 L60.37 76.93 L60.12 77.35 L59.83 77.74 L59.51 78.07 L59.16 78.36 L58.79 78.60 L58.41 78.79 L58.02 78.93 L57.64 79.03 L57.25 79.07 L56.88 79.07 L56.52 79.02 L56.18 78.94 L55.87 78.82 L55.59 78.67 L55.33 78.49 L55.11 78.30 L54.92 78.08 L54.77 77.86 L54.65 77.62 L54.56 77.39 L54.51 77.16 L54.49 76.93 L54.49 76.71 L54.53 76.51 L54.58 76.33 L54.66 76.16 L54.75 76.01 L54.84 75.89 L54.95 75.78 L55.05 75.69' stroke='%238E6B34' stroke-width='1.1' stroke-linecap='round'/%3E%3Cpath d='M211.00 76.00 L211.23 77.39 L211.60 78.73 L212.11 80.00 L212.74 81.20 L213.50 82.31 L214.36 83.32 L215.32 84.21 L216.35 84.99 L217.45 85.64 L218.60 86.16 L219.78 86.54 L220.99 86.80 L222.19 86.91 L223.39 86.90 L224.56 86.75 L225.70 86.48 L226.78 86.10 L227.80 85.60 L228.75 85.00 L229.61 84.32 L230.38 83.55 L231.05 82.72 L231.62 81.83 L232.08 80.90 L232.44 79.93 L232.67 78.95 L232.80 77.97 L232.82 76.99 L232.73 76.03 L232.54 75.10 L232.25 74.22 L231.88 73.38 L231.42 72.60 L230.89 71.89 L230.29 71.26 L229.64 70.70 L228.94 70.23 L228.21 69.85 L227.46 69.55 L226.69 69.35 L225.92 69.23 L225.15 69.20 L224.40 69.25 L223.68 69.39 L222.99 69.60 L222.34 69.88 L221.74 70.22 L221.19 70.62 L220.70 71.07 L220.27 71.56 L219.91 72.08 L219.62 72.63 L219.40 73.19 L219.24 73.76 L219.15 74.33 L219.13 74.89 L219.17 75.44 L219.27 75.97 L219.43 76.46 L219.63 76.93 L219.88 77.35 L220.17 77.74 L220.49 78.07 L220.84 78.36 L221.21 78.60 L221.59 78.79 L221.98 78.93 L222.36 79.03 L222.75 79.07 L223.12 79.07 L223.48 79.02 L223.82 78.94 L224.13 78.82 L224.41 78.67 L224.67 78.49 L224.89 78.30 L225.08 78.08 L225.23 77.86 L225.35 77.62 L225.44 77.39 L225.49 77.16 L225.51 76.93 L225.51 76.71 L225.47 76.51 L225.42 76.33 L225.34 76.16 L225.25 76.01 L225.16 75.89 L225.05 75.78 L224.95 75.69' stroke='%238E6B34' stroke-width='1.1' stroke-linecap='round'/%3E%3Cpath d='M114 62C108 62 106 58 111 48M114 62C100 62 84 64 69 76' stroke='%238E6B34' stroke-width='1' stroke-linecap='round'/%3E%3Cpath d='M114 62C108 62 106 58 111 48M114 62C100 62 84 64 69 76' stroke='%238E6B34' stroke-width='1' stroke-linecap='round' transform='matrix(-1 0 0 1 280 0)'/%3E%3Cpath d='M18.00 62.00L24.00 54.00L30.00 62.00L24.00 70.00ZM250.00 62.00L256.00 54.00L262.00 62.00L256.00 70.00Z' stroke='%238E6B34' stroke-width='.9'/%3E%3Ccircle cx='24' cy='62' r='1.6' fill='%236B1F24'/%3E%3Ccircle cx='256' cy='62' r='1.6' fill='%236B1F24'/%3E%3C/svg%3E") center / contain no-repeat;
  opacity: .16;
  pointer-events: none;
}
.couple .head { margin-bottom: 2.6rem; }
