/* GarnetLicense panel — one hand-written stylesheet, served statically.
   No Vite, no npm, no build step (D-0020): an asset pipeline would put
   `npm install && npm run build` into the cold-rebuild sequence (D-0013 §2),
   on a fresh VPS, executed by a non-developer under pressure (R-4). */

:root { --fg:#1a1a1a; --muted:#666; --line:#ddd; --warn:#8a4b00; --warn-bg:#fff6e5; --err:#8a0000; --err-bg:#ffecec; --ok-bg:#eef7ee; }
* { box-sizing:border-box; }
body { margin:0; font:15px/1.5 system-ui,"Segoe UI",sans-serif; color:var(--fg); }
header { display:flex; gap:1.5rem; align-items:center; padding:.75rem 1.5rem; border-bottom:1px solid var(--line); }
nav { display:flex; gap:1rem; align-items:center; margin-left:auto; }
nav a { color:var(--fg); text-decoration:none; }
nav a:hover { text-decoration:underline; }
main { max-width:70rem; margin:0 auto; padding:1.5rem; }
h1 { font-size:1.4rem; } h2 { font-size:1.1rem; margin-top:2rem; }
table { border-collapse:collapse; width:100%; margin:.5rem 0; }
th,td { text-align:left; padding:.4rem .6rem; border-bottom:1px solid var(--line); vertical-align:top; }
th { font-weight:600; color:var(--muted); font-size:.85rem; }
form { margin:.75rem 0; }
label { display:block; margin:.4rem 0; }
label.check { display:block; margin:.15rem 0; font-weight:normal; }
input,select { padding:.35rem .5rem; border:1px solid var(--line); border-radius:3px; font:inherit; }
button { padding:.4rem .9rem; border:1px solid var(--fg); background:var(--fg); color:#fff; border-radius:3px; cursor:pointer; font:inherit; }
.inline { display:inline; margin:0; }
.notice { padding:.6rem .9rem; background:var(--ok-bg); border-left:3px solid #2b7a2b; }
.errors { padding:.6rem .9rem .6rem 2rem; background:var(--err-bg); border-left:3px solid var(--err); color:var(--err); }
.warning { padding:.6rem .9rem; background:var(--warn-bg); border-left:3px solid var(--warn); color:var(--warn); }
.hint { color:var(--muted); font-size:.9rem; }
.break { word-break:break-all; }
.worklist { border:1px solid var(--warn); padding:0 1rem 1rem; }

/* Bidirectional text.

   The document direction follows the UI language (English) and is left as it
   is. What needed isolating is the DATA: customer names are Persian
   ("مشاهیر", "کاخ عدالت") and sit in the same row as ASCII phone numbers,
   domains and dates. Without isolation the bidi algorithm reorders across
   that boundary and a name can appear to run into the value beside it.

   The markup does the work — <bdi> around rendered user data, dir="auto" on
   free-text inputs so Persian typing sits correctly — because it is per-value
   and needs no guess about which script a given row holds. This rule only
   keeps <bdi> from picking up any inherited styling. */
bdi { unicode-bidi: isolate; }

/* The silence tiers of D-0012 §1, shown on the fleet list. Marked rather than
   coloured-only: the operator reading this may be on a phone in daylight. */
.silent { color: var(--warn); }
