/*
 * Aladdin UI kit · "Magic of Working" (Dustin, 7 Nov 2026: direction A + "Make a Wish", no AI).
 * One look for every character. Served by each character at /aladdin-ui/aladdin-ui.css with the fonts beside it in
 * /aladdin-ui/fonts/ (copied from shared/ui/ at build time). Classes start with "al-" so they never clash with a
 * character's own CSS. Colours come from the KV; character icons stay each character's own artwork.
 * Fonts are self-hosted (Google Fonts does not load reliably in mainland China). Chinese uses the system font.
 */
@font-face{font-family:"Saira";font-style:normal;font-weight:500;font-display:swap;src:url("fonts/saira-latin-500-normal.woff2") format("woff2")}
@font-face{font-family:"Saira";font-style:normal;font-weight:600;font-display:swap;src:url("fonts/saira-latin-600-normal.woff2") format("woff2")}
@font-face{font-family:"Saira";font-style:normal;font-weight:700;font-display:swap;src:url("fonts/saira-latin-700-normal.woff2") format("woff2")}
@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:400;font-display:swap;src:url("fonts/source-sans-3-latin-400-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:600;font-display:swap;src:url("fonts/source-sans-3-latin-600-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:700;font-display:swap;src:url("fonts/source-sans-3-latin-700-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:400;font-display:swap;src:url("fonts/source-sans-3-cyrillic-400-normal.woff2") format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:600;font-display:swap;src:url("fonts/source-sans-3-cyrillic-600-normal.woff2") format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:700;font-display:swap;src:url("fonts/source-sans-3-cyrillic-700-normal.woff2") format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}

:root{
  /* KV */
  --al-gold:#FFB51B;--al-orange:#FF8033;--al-coral:#FE553E;--al-ruby:#FF0055;
  /* ground and ink */
  --al-paper:#FBF8F3;--al-card:#FFFFFF;--al-rail:#FFFDF9;--al-line:#ECE4D8;--al-line-strong:#D9CFC2;--al-hover:#F2ECE3;
  --al-ink:#3A3A3C;--al-ink-quiet:#6B635B;--al-ink-soft:#8A8178;
  /* warm surfaces */
  --al-warm:#FFFAF2;--al-warm-line:#F3E6CF;--al-glow:#FFF8EC;--al-glow-line:#F6DDB3;--al-done:#F7F3EC;
  /* text on tints (all ≥ 4.5:1) */
  --al-gold-ink:#7A4F00;--al-orange-ink:#8A2E0A;--al-coral-ink:#A1251A;--al-ruby-ink:#A3003A;--al-green-ink:#1E5B2E;
  --al-gold-tint:#FFF1D1;--al-orange-tint:#FFE6D6;--al-coral-tint:#FFE3DF;--al-ruby-tint:#FFE0EA;--al-green-tint:#E4F2E7;--al-grey-tint:#EEE9E2;
  --al-link:#B33A0A;--al-link-hover:#8A2E0A;--al-focus:#FF8033;
  --al-font:"Source Sans 3","PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC",Calibri,"Segoe UI",Arial,sans-serif;
  --al-display:"Saira","Source Sans 3","PingFang SC","Microsoft YaHei",Calibri,sans-serif;
  --al-r-sm:10px;--al-r:14px;--al-r-lg:20px;--al-r-xl:24px;
  --al-shadow:0 1px 0 #EFE7DB;--al-shadow-lift:0 12px 32px rgba(58,58,60,.18);
}

/* Base: add class "al" to <body> (or any wrapper) to adopt the kit */
.al{font-family:var(--al-font);color:var(--al-ink);background:var(--al-paper);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased}
.al *,.al *::before,.al *::after{box-sizing:border-box}
.al a{color:var(--al-link);text-underline-offset:.2em}
.al a:hover{color:var(--al-link-hover)}
.al :focus-visible{outline:3px solid var(--al-focus);outline-offset:2px}
.al h1,.al h2,.al h3,.al-h1,.al-h2,.al-h3{font-family:var(--al-display);font-weight:600;color:var(--al-ink);letter-spacing:0;margin:0}
.al h1,.al-h1{font-size:clamp(30px,3.2vw,44px);line-height:1.1}
.al h2,.al-h2{font-size:22px;line-height:1.25}
.al h3,.al-h3{font-size:18px;line-height:1.3}
.al-quiet{color:var(--al-ink-quiet)}
.al-small{font-size:14px}
.al-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* Page frame and heading */
.al-page{max-width:1280px;margin:0 auto;padding:28px clamp(16px,3.5vw,48px) 56px;display:flex;flex-direction:column;gap:24px}
.al-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px 24px}
.al-head-text{display:flex;flex-direction:column;gap:6px;min-width:0}
.al-head-meta{margin:0;color:var(--al-ink-quiet);font-size:16px}
.al-head-actions{display:flex;flex-wrap:wrap;gap:10px}
.al-crumbs{font-size:15px;color:var(--al-ink-quiet)}
.al-crumbs a{color:var(--al-ink-quiet)}

/* Buttons: one dark primary per screen */
.al-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:9px 16px;border-radius:var(--al-r-sm);border:1px solid var(--al-line-strong);background:var(--al-card);color:var(--al-ink);font:600 16px/1.2 var(--al-font);text-decoration:none;cursor:pointer;white-space:nowrap;width:auto}
.al-btn:hover{background:var(--al-hover);color:var(--al-ink)}
.al-btn--primary{background:var(--al-ink);border-color:var(--al-ink);color:#fff}
.al-btn--primary:hover{background:#2A2A2C;color:#fff}
.al-btn--wish{background:var(--al-ink);border-color:var(--al-ink);color:#fff}
.al-btn--wish::before{content:"";width:16px;height:16px;flex:none;background:var(--al-gold);-webkit-mask:url("spark.svg") center/contain no-repeat;mask:url("spark.svg") center/contain no-repeat}
.al-btn--wish:hover{background:#2A2A2C;color:#fff}
.al-btn--danger{color:#B4002F;border-color:#F3C2CF}
.al-btn--small{min-height:34px;padding:6px 12px;font-size:15px}
.al-btn:disabled,.al-btn[aria-disabled="true"]{opacity:.5;cursor:not-allowed}
/* Buttons drawn as links keep button colours inside .al pages */
.al a.al-btn{color:var(--al-ink);text-decoration:none}
.al a.al-btn--primary,.al a.al-btn--wish,.al a.al-btn--primary:hover,.al a.al-btn--wish:hover{color:#fff}
.al a.al-btn--danger{color:#B4002F}

/* Status chips: the same five words in every character */
.al-chip{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:3px 11px;font-size:14px;font-weight:600;line-height:1.4;white-space:nowrap;background:var(--al-grey-tint);color:#4A4540}
.al-chip--enquiry{background:var(--al-gold-tint);color:var(--al-gold-ink)}
.al-chip--quoting{background:var(--al-orange-tint);color:var(--al-orange-ink)}
.al-chip--confirmed{background:var(--al-green-tint);color:var(--al-green-ink)}
.al-chip--alert{background:var(--al-ruby-tint);color:var(--al-ruby-ink)}

/* Cards */
.al-card{background:var(--al-card);border:1px solid var(--al-line);border-radius:var(--al-r-lg);padding:22px 26px}
.al-card--hero{border-radius:var(--al-r-xl);padding:40px 44px 36px;position:relative;overflow:hidden}
.al-card--ink{background:var(--al-ink);border-color:var(--al-ink);color:#F6F1EA}
.al-card--ink h2{color:var(--al-gold)}
.al-card--ink .al-quiet{color:#CFC6BA}
.al-card-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:12px}

/* "Next move" card: the one action that moves work forward */
.al-next{display:flex;flex-wrap:wrap;align-items:center;gap:16px 18px;background:var(--al-glow);border:1px solid var(--al-glow-line);border-radius:var(--al-r-lg);padding:20px 24px}
.al-next-spark{width:28px;height:28px;flex:none;background:#E07A00;-webkit-mask:url("spark.svg") center/contain no-repeat;mask:url("spark.svg") center/contain no-repeat}
.al-next-text{flex:1 1 300px;min-width:0}
.al-next-text h2{font-size:20px;margin:0 0 4px}
.al-next-text p{margin:0;color:var(--al-ink-quiet)}

/* Tables */
.al-table-box{overflow-x:auto}
.al-table{width:100%;border-collapse:collapse;font-size:15px}
.al-table th{text-align:left;font-size:14px;font-weight:600;color:var(--al-ink-quiet);padding:8px 12px 8px 0;white-space:nowrap}
.al-table td{padding:12px 12px 12px 0;border-top:1px solid #F0E9DF;vertical-align:top}
.al-table tr:hover td{background:#FFFCF7}
.al-table .al-num{text-align:right;font-variant-numeric:tabular-nums}

/* Fields */
.al-field{display:flex;flex-direction:column;gap:4px;font-size:14px;font-weight:600;color:var(--al-ink-quiet)}
.al-input,.al-field input,.al-field select,.al-field textarea{font:400 16px/1.4 var(--al-font);color:var(--al-ink);background:#fff;border:1px solid var(--al-line-strong);border-radius:var(--al-r-sm);padding:9px 12px;min-height:42px;width:100%}

/* Tabs */
.al-tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--al-line)}
.al-tabs a,.al-tabs button{font:600 15px/1.3 var(--al-font);color:var(--al-ink-quiet);text-decoration:none;background:none;border:0;border-bottom:3px solid transparent;padding:10px 12px;margin-bottom:-1px;cursor:pointer;width:auto}
.al-tabs [aria-current="page"],.al-tabs [aria-selected="true"]{color:var(--al-ink);border-bottom-color:var(--al-orange)}

/* The arch from the KV (decorative) */
.al-arch{position:absolute;right:-80px;top:36px;width:380px;height:520px;pointer-events:none}
.al-arch span{position:absolute;border-style:solid;border-width:22px 0 0 22px;border-top-left-radius:260px;transition:opacity .6s ease,filter .6s ease}
.al-arch span:nth-child(1){inset:0;border-color:var(--al-gold)}
.al-arch span:nth-child(2){inset:34px 0 0 34px;border-color:var(--al-orange);border-top-left-radius:226px}
.al-arch span:nth-child(3){inset:68px 0 0 68px;border-color:var(--al-coral);border-top-left-radius:192px}
.al-arch span:nth-child(4){inset:102px 0 0 102px;border-color:var(--al-ruby);border-top-left-radius:158px}
.al-arch--resting span{opacity:.22}
.al-arch--resting span.is-lit{opacity:1}
.al-arch--lit span{opacity:1;filter:drop-shadow(0 0 14px rgba(255,181,27,.55))}

/* Three wishes */
.al-wish-dots{display:flex;align-items:center;gap:10px;font-size:15px;color:var(--al-ink-quiet)}
.al-wish-dots span{display:flex;gap:6px}
.al-wish-dots i{width:18px;height:18px;border-radius:9px;border:2px solid #E6CFA6}
.al-wish-dots i.is-granted{border:0;background:var(--al-gold);box-shadow:0 0 0 4px #FFEBC2}
.al-wishes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.al-wish{display:flex;align-items:center;gap:16px;background:var(--al-warm);border:1px solid var(--al-warm-line);border-radius:var(--al-r);padding:14px 16px}
.al-wish-n{font-family:var(--al-display);font-weight:700;font-size:22px;color:#C26A00;width:22px;flex:none;text-align:center}
.al-wish-text{flex:1;min-width:0}
.al-wish-text small{display:block;color:var(--al-ink-quiet);font-size:15px}
.al-wish.is-granted{background:var(--al-done);border-color:var(--al-line);color:var(--al-ink-quiet)}
.al-wish.is-granted .al-wish-text b{text-decoration:line-through;font-weight:600}
.al-wish.is-granted .al-wish-n{color:#B87800}

/* The lamp: "Make a wish" bar */
.al-lamp{position:relative;flex:1 1 420px;max-width:680px}
.al-lamp-field{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid #E6DDD0;border-radius:var(--al-r);padding:0 14px;height:46px;box-shadow:var(--al-shadow)}
.al-lamp-field:focus-within{border-color:var(--al-gold);box-shadow:0 0 0 3px #FFE3A6}
.al-lamp-icon{width:32px;height:20px;flex:none}
.al-lamp-field input:focus-visible{outline:none}
.al-lamp-field input{flex:1;min-width:0;border:0;outline:none;background:transparent;font:400 16px/1.2 var(--al-font);color:var(--al-ink);padding:0;min-height:0}
.al-lamp-key{font-size:12px;color:var(--al-ink-quiet);border:1px solid #E6DDD0;border-radius:6px;padding:1px 6px;white-space:nowrap}
.al-lamp-panel{position:absolute;left:0;right:0;top:calc(100% + 8px);z-index:50;background:#FFFDF9;border:1px solid var(--al-line);border-radius:var(--al-r-lg);box-shadow:0 24px 60px rgba(20,12,0,.28);padding:10px;max-height:min(70vh,560px);overflow:auto}
.al-lamp-group{margin:8px 10px 4px;font-size:13px;font-weight:600;color:var(--al-ink-quiet)}
.al-lamp-item{display:flex;align-items:center;gap:12px;padding:10px;border-radius:12px;color:var(--al-ink);text-decoration:none;width:100%;background:none;border:0;font:inherit;text-align:left;cursor:pointer}
.al-lamp-item img{width:32px;height:32px;object-fit:contain;flex:none}
.al-lamp-item:hover,.al-lamp-item[aria-selected="true"]{background:#FFF3DC;color:var(--al-ink)}
.al-lamp-item small{display:block;color:var(--al-ink-quiet);font-size:14px}
.al-lamp-empty{margin:10px;color:var(--al-ink-quiet)}

/* Character rail */
.al-rail{background:var(--al-rail);border-right:1px solid var(--al-line);display:flex;flex-direction:column;gap:18px;padding:20px 14px}
.al-rail-group{display:flex;flex-direction:column;gap:2px}
.al-rail-label{font-size:13px;font-weight:600;color:var(--al-ink-quiet);padding:0 10px 4px}
.al-rail-item{display:flex;align-items:center;gap:12px;padding:6px 10px;border-radius:12px;color:var(--al-ink);text-decoration:none;font-weight:600;font-size:15px}
.al-rail-item img{width:34px;height:34px;object-fit:contain;flex:none}
.al-rail-item:hover{background:var(--al-hover);color:var(--al-ink)}
.al-rail-item[aria-current="page"]{background:#FFF1DE;box-shadow:inset 3px 0 0 var(--al-orange)}
.al-badge{margin-left:auto;font-size:12px;font-weight:700;color:#fff;background:#C8003F;border-radius:9px;padding:1px 7px}

/* "Wish granted" toast */
.al-toast{position:fixed;right:24px;bottom:24px;z-index:80;display:flex;align-items:center;gap:14px;background:var(--al-ink);color:#fff;border-radius:16px;padding:12px 16px 12px 12px;box-shadow:var(--al-shadow-lift);max-width:min(460px,calc(100vw - 32px));animation:al-rise .35s ease-out}
.al-toast-mark{width:38px;height:38px;border-radius:19px;background:var(--al-gold);flex:none;display:grid;place-items:center}
.al-toast-mark::after{content:"";width:20px;height:20px;background:var(--al-ink);-webkit-mask:url("spark.svg") center/contain no-repeat;mask:url("spark.svg") center/contain no-repeat}
.al-toast b{color:var(--al-gold);display:block}
.al-toast span{font-size:15px;color:#E9E2D8}
.al-toast button{background:transparent;border:0;color:var(--al-gold);font:600 15px var(--al-font);padding:6px;cursor:pointer;width:auto}
@keyframes al-rise{from{transform:translateY(12px);opacity:0}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){.al-toast{animation:none}.al-arch span{transition:none}}
@media (max-width:700px){.al-card--hero{padding:28px 22px}.al-arch{width:260px;height:320px;right:-90px;opacity:.6}.al-wish{flex-wrap:wrap}}
