@font-face{font-family:Noto Sans Lao;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-sans-lao-lao-400-normal.woff2)format("woff2");unicode-range:U+E81-EDF,U+200C-200D,U+25CC}@font-face{font-family:Noto Sans Lao;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/noto-sans-lao-lao-500-normal.woff2)format("woff2");unicode-range:U+E81-EDF,U+200C-200D,U+25CC}@font-face{font-family:Noto Sans Lao;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/noto-sans-lao-lao-700-normal.woff2)format("woff2");unicode-range:U+E81-EDF,U+200C-200D,U+25CC}@font-face{font-family:Noto Sans Lao;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-sans-lao-latin-400-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+20AC,U+2122,U+2212}@font-face{font-family:Noto Sans Lao;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/noto-sans-lao-latin-700-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+20AC,U+2122,U+2212}@font-face{font-family:Noto Sans Lao Looped;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-sans-lao-looped-lao-400-normal.woff2)format("woff2");unicode-range:U+E81-EDF,U+200C-200D,U+25CC}@font-face{font-family:Noto Sans Lao Looped;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/noto-sans-lao-looped-lao-700-normal.woff2)format("woff2");unicode-range:U+E81-EDF,U+200C-200D,U+25CC}:root{--c-navy:#14284b;--c-blue:#1e4fb8;--c-sky:#dcebfc;--c-bg:#f5f8fd;--c-text:#14284b;--c-muted:#5b6b85;--c-white:#fff;--c-border:#d3deef;--font-lao:"Noto Sans Lao", "Noto Sans Lao Looped", system-ui, sans-serif;--fs-base:16px;--fs-sm:14px;--fs-lg:20px;--fs-xl:26px;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--radius:12px;--tap:44px;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px)}.lp{background:linear-gradient(160deg,#fff 0%,#eef5ff 55%,#cfe3fb 100%);flex-direction:column;min-height:100%;display:flex;position:relative;overflow:hidden}.lp-body{z-index:1;width:100%;max-width:560px;padding:calc(var(--sp-5) + var(--safe-top)) calc(var(--sp-5) + var(--safe-right)) var(--sp-5) calc(var(--sp-5) + var(--safe-left));gap:var(--sp-5);flex-direction:column;flex:1;margin:0 auto;display:flex;position:relative}.lp-brand{align-items:center;gap:var(--sp-3);font-size:var(--fs-lg);font-weight:700;display:flex}.lp-hero{gap:var(--sp-4);padding-top:var(--sp-6);flex-direction:column;display:flex;position:relative}.lp-hero h1{max-width:11em;margin:0;font-size:clamp(32px,9.5vw,44px);font-weight:700;line-height:1.35}.lp-hero p{max-width:22em;margin:0;font-size:18px}.lp-badge{color:var(--c-blue);font-size:var(--fs-sm);background:#fff;border-radius:999px;padding:6px 14px;font-weight:500;display:inline-block;box-shadow:0 4px 14px #1e4fb82e}.lp-badges{gap:var(--sp-2);flex-wrap:wrap;display:flex}.lp-actions{gap:var(--sp-3);margin-top:var(--sp-2);flex-direction:column;display:flex}.btn{text-align:center;min-height:56px;padding:0 var(--sp-5);border-radius:var(--radius);cursor:pointer;justify-content:center;align-items:center;font-size:18px;font-weight:500;text-decoration:none;display:flex}.btn-primary{background:var(--c-blue);color:#fff;border:0;box-shadow:0 6px 16px #1e4fb84d}.btn-secondary{color:var(--c-blue);background:#ffffffb3;border:1.5px solid #b9d0f2}.lp-footer{z-index:1;text-align:center;font-size:var(--fs-sm);padding:var(--sp-3) var(--sp-4) calc(var(--sp-3) + var(--safe-bottom));border-top:1px solid var(--c-border);background:#fffc;position:relative}.lp-deco{z-index:0;pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0}.lp-card{opacity:.8;background:#ffffffbf;border-radius:10px;flex-direction:column;gap:8px;width:190px;padding:14px;display:flex;position:absolute;right:-60px;box-shadow:0 8px 24px #1e4fb81f}.lp-card i{background:#d9e3f2;border-radius:6px;width:40px;height:40px;display:block}.lp-card b{background:#dbe5f4;border-radius:4px;height:8px;display:block}.lp-card-1{top:70px}.lp-card-2{top:300px}.lp-card-3{top:520px}@media (min-width:720px){.lp-card{width:240px;right:6%}}.lp-error{color:#b3261e;font-size:var(--fs-sm);text-align:center;margin:0}.lp-warn{margin:var(--sp-3) 0 0;padding:var(--sp-3);border-radius:var(--radius);color:#5b4300;font-size:var(--fs-sm);background:#fff7e0;border:1px solid #f0d9a0;line-height:1.6}.lp-guide{margin:var(--sp-3) 0 0;font-size:var(--fs-sm);line-height:1.7}.lp-guide summary{cursor:pointer;min-height:44px;color:var(--c-blue);align-items:center;font-weight:700;display:flex}.lp-guide ol{margin:0;padding-left:1.4em}.g-page{max-width:900px;min-height:100%;padding:calc(var(--sp-5) + var(--safe-top)) calc(var(--sp-4) + var(--safe-right)) calc(var(--sp-5) + var(--safe-bottom)) calc(var(--sp-4) + var(--safe-left));gap:var(--sp-4);background:linear-gradient(180deg, #e9f2ff 0%, var(--c-bg) 220px);flex-direction:column;margin:0 auto;display:flex}.g-head{justify-content:space-between;align-items:center;gap:var(--sp-3);display:flex}.g-head h1{margin:0;font-size:32px;line-height:1.3}.g-head a{min-width:var(--tap);min-height:var(--tap);justify-content:center;align-items:center;display:inline-flex}.g-head svg{width:34px;height:40px}.g-search{align-items:center;gap:var(--sp-2);min-height:52px;padding:0 var(--sp-4);border:1.5px solid var(--c-border);border-radius:var(--radius);color:var(--c-muted);background:#fff;display:flex}.g-search input{min-width:0;font:inherit;color:var(--c-text);background:0 0;border:0;outline:0;flex:1;font-size:16px}.g-search:focus-within{border-color:var(--c-blue)}.g-chips{gap:var(--sp-2);scrollbar-width:none;-webkit-overflow-scrolling:touch;padding-bottom:4px;display:flex;overflow-x:auto}.g-chips::-webkit-scrollbar{display:none}.g-chip{padding:0 var(--sp-5);color:var(--c-blue);border:1.5px solid var(--c-blue);background:#fff;border-radius:999px;flex:none;font-size:16px;font-weight:500}.g-chip[aria-pressed=true]{background:var(--c-blue);color:#fff}.g-grid{gap:var(--sp-3);grid-template-columns:repeat(2,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.g-card{padding:var(--sp-3);gap:var(--sp-2);background:#fff;border-radius:16px;flex-direction:column;display:flex;box-shadow:0 2px 10px #14284b14}.g-thumb{padding:var(--sp-3);background:#cfe0f5;border-radius:10px}.g-name{font-size:var(--fs-sm);text-align:center;font-weight:500}.g-btn{min-height:var(--tap);padding:0 var(--sp-2);border-radius:10px;margin-top:auto;font-size:15px}.g-empty{text-align:center;color:var(--c-muted);padding:var(--sp-6) 0}@media (min-width:720px){.g-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.ts{gap:var(--sp-2);flex-direction:column;display:flex}.ts-row{gap:var(--sp-2);scrollbar-width:none;padding-bottom:4px;display:flex;overflow-x:auto}.ts-row::-webkit-scrollbar{display:none}.ed{background:var(--c-bg);flex-direction:column;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.ed-nav{align-items:center;gap:var(--sp-2);padding:calc(var(--sp-2) + var(--safe-top)) calc(var(--sp-3) + var(--safe-right)) var(--sp-2) calc(var(--sp-3) + var(--safe-left));background:var(--c-navy);color:var(--c-white);flex:none;display:flex}.ed-back{min-height:var(--tap);color:var(--c-white);flex:none;align-items:center;gap:6px;font-weight:500;text-decoration:none;display:inline-flex}.ed-status{text-align:center;flex:1;min-width:0;font-size:12px;line-height:1.3}.ed-save{padding:0 var(--sp-3);background:var(--c-blue);color:var(--c-white);font-weight:500;font-size:var(--fs-sm);border:0;border-radius:10px;flex:none;align-items:center;gap:6px;display:inline-flex}.ed-canvas-wrap{flex:1;min-height:0;position:relative}.ed-canvas{-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;overscroll-behavior:contain;position:absolute;top:0;bottom:0;left:0;right:0;overflow:auto}.ed-grid{box-sizing:border-box;background-color:#f8fafd;background-image:linear-gradient(#1e4fb81a 1px,#0000 1px),linear-gradient(90deg,#1e4fb81a 1px,#0000 1px);background-size:24px 24px;justify-content:center;align-items:flex-start;width:max-content;min-width:100%;min-height:100%;display:flex;padding-bottom:calc(120px + var(--safe-bottom))!important}.ed-zoom{right:calc(12px + var(--safe-right));bottom:calc(100px + var(--safe-bottom));background:var(--c-white);border-radius:12px;align-items:center;display:flex;position:absolute;overflow:hidden;box-shadow:0 2px 10px #14284b38}.ed-zoom button{min-width:var(--tap);color:var(--c-navy);background:0 0;border:0;font-size:20px}.ed-zoom button:disabled{opacity:.35}.ed-zoom .ed-zoom-pct{font-size:var(--fs-sm);min-width:56px}.ed-bar{left:50%;bottom:calc(12px + var(--safe-bottom));background:var(--c-white);border-radius:18px;gap:4px;width:calc(100% - 24px);max-width:420px;padding:6px;display:flex;position:absolute;transform:translate(-50%);box-shadow:0 4px 18px #14284b40}.ed-tool{min-height:60px;color:var(--c-navy);background:0 0;border:0;border-radius:14px;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;padding:4px 2px;font-size:13px;line-height:1.3;display:flex}.ed-tool[aria-pressed=true]{background:var(--c-sky);color:var(--c-blue)}.ed-sheet{z-index:2;left:50%;bottom:calc(92px + var(--safe-bottom));width:calc(100% - 24px);max-width:420px;padding:var(--sp-3);background:var(--c-white);border-radius:16px;position:absolute;transform:translate(-50%);box-shadow:0 4px 18px #14284b40}.ed-ed{cursor:text;border-radius:3px}.ed-ed:focus{background:#1e4fb81f}.ed-ed:empty:before{content:attr(data-ph);opacity:.45;pointer-events:none}.ed-sheet{gap:var(--sp-2);flex-direction:column;display:flex}.ed-row{gap:var(--sp-2);flex-wrap:wrap;display:flex}.ed-row .g-chip{padding:0 var(--sp-4);font-size:var(--fs-sm)}.ed-hint{color:var(--c-muted)}.ed-modal{z-index:10;padding:calc(var(--sp-4) + var(--safe-top)) var(--sp-4) calc(var(--sp-4) + var(--safe-bottom));background:#0a142899;justify-content:center;align-items:center;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.ed-modal-card{align-items:center;gap:var(--sp-3);max-height:100%;padding:var(--sp-4);background:var(--c-white);border-radius:16px;flex-direction:column;display:flex;overflow:auto}.ed-crop{touch-action:none;cursor:grab;background:#222;position:relative;overflow:hidden}.ed-sheet-lg{overscroll-behavior:contain;max-height:min(60vh,460px);overflow-y:auto}.ed-colors{align-items:center}.ed-swatch{width:var(--tap);height:var(--tap);min-height:var(--tap);border:2px solid var(--c-border);cursor:pointer;border-radius:50%;padding:0}.ed-swatch[aria-pressed=true]{border-color:var(--c-navy);box-shadow:0 0 0 2px var(--c-white), 0 0 0 4px var(--c-navy)}.ed-color-input{background:0 0;overflow:hidden}.ed-slider{gap:var(--sp-1);flex-direction:column;display:flex}.ed-slider span{color:var(--c-muted);font-weight:400}.ed-slider input{width:100%;min-height:var(--tap)}.ed-hist{left:calc(12px + var(--safe-left));bottom:calc(100px + var(--safe-bottom));background:var(--c-white);border-radius:12px;display:flex;position:absolute;overflow:hidden;box-shadow:0 2px 10px #14284b38}.ed-hist button{min-width:var(--tap);color:var(--c-navy);background:0 0;border:0;justify-content:center;align-items:center;display:flex}.ed-hist button:disabled{opacity:.35}.ed-body{flex:1;min-height:0;display:flex}.ed-center{flex:1;min-width:0;display:flex;position:relative}.ed-side{overscroll-behavior:contain;background:var(--c-white);width:280px;padding:var(--sp-4);gap:var(--sp-3);flex-direction:column;flex:none;display:flex;overflow-y:auto}.ed-side:first-child{border-right:1px solid var(--c-border)}.ed-side:last-child{border-left:1px solid var(--c-border);width:320px}.ed-side h2{font-size:var(--fs-base);color:var(--c-navy);margin:0}.ed-side .ed-sheet,.ed-side .ed-sheet-lg{width:auto;max-width:none;max-height:none;box-shadow:none;background:0 0;border-radius:0;padding:0;position:static;overflow:visible;transform:none}.ed-wide .ed-grid{padding-bottom:24px!important}.ed-wide .ed-zoom,.ed-wide .ed-hist{bottom:16px}.dg-card{align-items:stretch;width:min(100%,640px)}.dg-svg{border:1px solid var(--c-border);touch-action:none;-webkit-user-select:none;user-select:none;background-color:#f8fafd;background-image:linear-gradient(#1e4fb814 1px,#0000 1px),linear-gradient(90deg,#1e4fb814 1px,#0000 1px);background-size:20px 20px;border-radius:12px;width:100%}.dg-label{gap:var(--sp-1);flex-direction:column;display:flex}.ed-input{min-height:var(--tap);padding:0 var(--sp-3);border:1.5px solid var(--c-border);font:inherit;color:var(--c-text);background:var(--c-white);border-radius:10px;font-size:16px}.g-chip:disabled{opacity:.4}.ch-row{gap:var(--sp-2);display:flex}.ch-in{min-width:0;min-height:var(--tap);padding:0 var(--sp-3);border:1px solid var(--c-border);font:inherit;border-radius:10px;flex:1}.ch-in.ch-num{flex:none;width:76px}.ed-row .g-chip[aria-pressed=true]{background:var(--c-sky);color:var(--c-blue);border-color:var(--c-blue)}.ed-prev{min-width:var(--tap);min-height:var(--tap);color:var(--c-white);flex:none;justify-content:center;align-items:center;display:inline-flex}.pv{background:var(--c-bg);flex-direction:column;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.pv-title{text-align:center;min-width:0;font-size:var(--fs-lg);color:var(--c-white);flex:1;margin:0;font-weight:500}.pv .ed-back{min-width:0}.pv-scroll{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;min-height:0;padding:var(--sp-4) calc(var(--sp-4) + var(--safe-right)) var(--sp-4) calc(var(--sp-4) + var(--safe-left));flex:1;overflow:auto}.pv-paper{background:var(--c-white);max-width:794px;margin:0 auto;box-shadow:0 2px 14px #14284b38}.pv-bar{gap:var(--sp-2);box-sizing:border-box;width:100%;max-width:794px;padding:var(--sp-3) calc(var(--sp-4) + var(--safe-right)) calc(var(--sp-3) + var(--safe-bottom)) calc(var(--sp-4) + var(--safe-left));background:var(--c-white);border-radius:16px 16px 0 0;flex-direction:column;flex:none;margin:0 auto;display:flex;box-shadow:0 -2px 12px #14284b1f}.pv-btn{justify-content:center;align-items:center;gap:var(--sp-2);width:100%;min-height:52px;display:flex}.pv-btn:disabled{opacity:.5}.pv-soon{text-align:center}.pv-export{pointer-events:none;position:fixed;top:0;left:-10000px}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-lao);font-size:var(--fs-base);color:var(--c-text);background:var(--c-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;line-height:1.6;overflow-x:hidden}button{font:inherit;min-height:var(--tap);cursor:pointer}a{color:var(--c-blue)}.page{min-height:100%;padding:calc(var(--sp-5) + var(--safe-top)) calc(var(--sp-4) + var(--safe-right)) calc(var(--sp-5) + var(--safe-bottom)) calc(var(--sp-4) + var(--safe-left));gap:var(--sp-4);flex-direction:column;max-width:720px;margin:0 auto;display:flex}.page h1{font-size:var(--fs-xl);margin:0}.nav{gap:var(--sp-2);flex-wrap:wrap;display:flex}.nav a{min-height:var(--tap);padding:0 var(--sp-4);border-radius:var(--radius);background:var(--c-sky);align-items:center;font-weight:500;text-decoration:none;display:inline-flex}.nav a[aria-current=page]{background:var(--c-blue);color:var(--c-white)}.pwa-toast{z-index:60;left:50%;top:calc(var(--sp-2) + var(--safe-top));box-sizing:border-box;justify-content:space-between;align-items:center;gap:var(--sp-3);width:calc(100% - 24px);max-width:420px;padding:var(--sp-2) var(--sp-3);background:var(--c-navy);color:var(--c-white);font-size:var(--fs-sm);border-radius:12px;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 4px 18px #14284b59}.pwa-toast button{min-height:var(--tap);padding:0 var(--sp-4);background:var(--c-blue);color:var(--c-white);border:0;border-radius:10px;flex:none;font-weight:500}.pwa-install{gap:var(--sp-2);flex-direction:column;display:flex}.pwa-ios{color:var(--c-muted);font-size:var(--fs-sm);text-align:center;margin:0}
