/*
 * tw_shim.css — the Tailwind this page actually uses, as static CSS.
 *
 * The Play CDN (<script src="https://cdn.tailwindcss.com">) was a
 * render-blocking third-party script that compiled CSS in the browser on every
 * boot and kept a document-wide MutationObserver alive for the whole session —
 * a per-DOM-mutation tax on a page whose nameplates add and remove nodes every
 * fight. The class inventory it served is static (every utility below appears
 * verbatim in index.html or a client/*.js className string; nothing composes
 * class names at runtime), so the compiler had exactly one possible output,
 * and this file is it.
 *
 * Two sections: the preflight reset the layout depends on (box-sizing,
 * zeroed element margins), then the used utilities. If you add NEW Tailwind
 * classes to markup they must be added here too — there is no compiler
 * watching anymore. Definitions match Tailwind v3 exactly; the font families
 * and the chat animation come from the old inline tailwind.config, whose
 * keyframes (chatFadeIn) live in style.css.
 */

/* ---- preflight (Tailwind v3, trimmed of rules for elements this app never
 *      renders: no tables, fieldsets, or samp/kbd in the game chrome) ---- */

*, ::before, ::after {
    box-sizing: border-box;
    border-width: 0;
    border-style: solid;
    border-color: #e5e7eb;
}
::before, ::after { --tw-content: ''; }
html {
    line-height: 1.5;
    -webkit-text-size-adjust: 100%;
    tab-size: 4;
    font-family: Georgia, 'Times New Roman', serif;
}
body { margin: 0; line-height: inherit; }
hr { height: 0; color: inherit; border-top-width: 1px; }
abbr:where([title]) { text-decoration: underline dotted; }
h1, h2, h3, h4, h5, h6 { font-size: inherit; font-weight: inherit; }
a { color: inherit; text-decoration: inherit; }
b, strong { font-weight: bolder; }
code, pre { font-family: 'Geist Mono', ui-monospace, monospace; font-size: 1em; }
small { font-size: 80%; }
sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
sub { bottom: -0.25em; }
sup { top: -0.5em; }
button, input, optgroup, select, textarea {
    font-family: inherit;
    font-feature-settings: inherit;
    font-variation-settings: inherit;
    font-size: 100%;
    font-weight: inherit;
    line-height: inherit;
    color: inherit;
    margin: 0;
    padding: 0;
}
button, select { text-transform: none; }
/* :where(), and it is load-bearing — see the note at the top of this file
   about source order.
 *
 * Upstream this selector is bare, and for a <button type="submit"> the
 * ATTRIBUTE half of it matches at (0,1,0) — the same specificity as a single
 * class. So `[type='submit']` tied with `.btn-primary`, and because this sheet
 * loads after style.css the tie went to the reset: every button in the game
 * whose fill comes from one class lost it. Twenty-five of them on the sign-in
 * screen alone — the gold on Log In and Enter World (leaving near-black text
 * on a near-black panel), every paperdoll slot, every hotbar slot, the nav's
 * icon buttons.
 *
 * :where() contributes zero specificity, so the reset still reaches a button
 * with no rule of its own and loses to every button that has one. The rest of
 * the preflight is left alone deliberately: `[hidden]` below is (0,1,0) ON
 * PURPOSE, because it has to beat .auth-form{display:flex} on the same tie. */
:where(button, [type='button'], [type='reset'], [type='submit']) {
    -webkit-appearance: button;
    background-color: transparent;
    background-image: none;
}
:-moz-focusring { outline: auto; }
:-moz-ui-invalid { box-shadow: none; }
progress { vertical-align: baseline; }
::-webkit-inner-spin-button, ::-webkit-outer-spin-button { height: auto; }
[type='search'] { -webkit-appearance: textfield; outline-offset: -2px; }
::-webkit-search-decoration { -webkit-appearance: none; }
::-webkit-file-upload-button { -webkit-appearance: button; font: inherit; }
summary { display: list-item; }
blockquote, dl, dd, h1, h2, h3, h4, h5, h6, hr, figure, p, pre { margin: 0; }
ol, ul, menu { list-style: none; margin: 0; padding: 0; }
textarea { resize: vertical; }
input::placeholder, textarea::placeholder { opacity: 1; color: #9ca3af; }
button, [role="button"] { cursor: pointer; }
:disabled { cursor: default; }
img, svg, video, canvas, audio, iframe, embed, object { display: block; vertical-align: middle; }
img, video { max-width: 100%; height: auto; }
[hidden] { display: none; }

/* ---- used utilities ---- */

/* position / layout */
.absolute { position: absolute; }
.relative { position: relative; }
.inset-0 { inset: 0; }
.inset-y-0 { top: 0; bottom: 0; }
.left-0 { left: 0; }
.top-0 { top: 0; }
.bottom-full { bottom: 100%; }
.left-1\/2 { left: 50%; }
.z-10 { z-index: 10; }
.flex { display: flex; }
.hidden { display: none; }
.flex-col { flex-direction: column; }
.flex-1 { flex: 1 1 0%; }
.min-w-0 { min-width: 0; }
.items-center { align-items: center; }
.justify-center { justify-content: center; }
.overflow-hidden { overflow: hidden; }

/* sizing */
.h-full { height: 100%; }
.w-full { width: 100%; }
.h-\[100dvh\] { height: 100dvh; }
.h-\[17px\] { height: 17px; }
.h-\[7px\] { height: 7px; }
.h-\[3px\] { height: 3px; }
.w-\[160px\] { width: 160px; }
.w-\[70\%\] { width: 70%; }
.w-\[80\%\] { width: 80%; }

/* spacing */
.mx-1 { margin-left: 0.25rem; margin-right: 0.25rem; }
.mt-\[2px\] { margin-top: 2px; }
/* Gap between the quest marker and the top of the nameplate it sits over.
   `bottom-full` puts the marker's bottom edge on the plate's top edge, so
   without this the glyph's descender touches the health bar. */
.mb-\[3px\] { margin-bottom: 3px; }

/* transforms */
/* Half-width pullback for a `left-1/2` centred absolute element. The quest
   marker is shrink-to-fit around its glyph, so without this it hangs half a
   glyph right of the head it belongs to — and the two glyphs are different
   widths, so the two marker states were off-centre by different amounts. */
.-translate-x-1\/2 { transform: translateX(-50%); }
.px-1\.5 { padding-left: 0.375rem; padding-right: 0.375rem; }

/* typography */
.font-geist { font-family: Georgia, 'Times New Roman', serif; }
.font-geist-mono { font-family: 'Geist Mono', ui-monospace, monospace; }
.font-medium { font-weight: 500; }
.font-semibold { font-weight: 600; }
.font-bold { font-weight: 700; }
.text-xs { font-size: 0.75rem; line-height: 1rem; }
.text-\[7px\] { font-size: 7px; }
.text-\[9px\] { font-size: 9px; }
.text-\[11px\] { font-size: 11px; }
.text-\[12px\] { font-size: 12px; }
.text-\[13px\] { font-size: 13px; }
.text-\[19px\] { font-size: 19px; }
.leading-none { line-height: 1; }
.tracking-wide { letter-spacing: 0.025em; }
.text-center { text-align: center; }
.uppercase { text-transform: uppercase; }
.truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tabular-nums { font-variant-numeric: tabular-nums; }
.antialiased { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }

/* color */
.text-white { color: #fff; }
.text-\[\#71717a\] { color: #71717a; }
.text-\[\#d4af5f\] { color: #d4af5f; }
.text-\[\#e8dcc0\] { color: #e8dcc0; }
.text-\[\#f0d68a\] { color: #f0d68a; }
.text-\[\#a3906c\] { color: #a3906c; }
.text-\[\#c9bb9a\] { color: #c9bb9a; }
.text-\[\#b8d4c0\] { color: #b8d4c0; }
.text-\[\#8fb8d4\] { color: #8fb8d4; }
.text-\[\#d9705f\] { color: #d9705f; }
.text-\[\#8fae5a\] { color: #8fae5a; }
.bg-\[\#0d0b08\]\/85 { background-color: rgb(13 11 8 / 0.85); }
.bg-\[\#0d0b08\]\/75 { background-color: rgb(13 11 8 / 0.75); }
.bg-\[\#d4af5f\] { background-color: #d4af5f; }
.bg-\[\#9a86c4\] { background-color: #9a86c4; }

/* borders / radius */
.border { border-width: 1px; }
.border-black\/70 { border-color: rgb(0 0 0 / 0.7); }
.border-black\/80 { border-color: rgb(0 0 0 / 0.8); }
.rounded-full { border-radius: 9999px; }
.rounded-\[2px\] { border-radius: 2px; }
.rounded-\[3px\] { border-radius: 3px; }

/* shadow + ring compose through the same custom properties Tailwind uses, so
 * the target-highlight ring stacks on the plate's drop shadow instead of
 * replacing it, whichever class order the element carries. */
.shadow-md {
    --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)),
                 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
    box-shadow: var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow, 0 0 #0000);
}
.shadow-black\/60 { --tw-shadow-color: rgb(0 0 0 / 0.6); }
.ring-1 {
    --tw-ring-shadow: 0 0 0 1px var(--tw-ring-color, rgb(59 130 246 / 0.5));
    box-shadow: var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow, 0 0 #0000);
}
.ring-\[\#c0554a\]\/90 { --tw-ring-color: rgb(192 85 74 / 0.9); }
.ring-\[\#8fae5a\]\/90 { --tw-ring-color: rgb(143 174 90 / 0.9); }

/* interaction / misc */
.cursor-pointer { cursor: pointer; }
.cursor-not-allowed { cursor: not-allowed; }
.pointer-events-none { pointer-events: none; }
.pointer-events-auto { pointer-events: auto; }
.opacity-50 { opacity: 0.5; }
.will-change-transform { will-change: transform; }

/* transitions / animation (keyframes chatFadeIn live in style.css) */
.transition-\[width\] {
    transition-property: width;
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    transition-duration: 150ms;
}
.duration-150 { transition-duration: 150ms; }
.ease-out { transition-timing-function: cubic-bezier(0, 0, 0.2, 1); }
.animate-chat-in { animation: chatFadeIn 0.25s ease-out; }
