/* ==========================================================
   ui.css — সাইটের সম্মিলিত ডিজাইন স্তর (ধাপ ৩)
   সব পেজের শেষে লোড হয়: একই রং-পটভূমি, কার্ড, ইনপুট, বাটন, ফোকাস ও বার্তার ধরন।
   এই ফাইল মুছে দিলে সাইট আগের চেহারায় ফিরে যায় (অন্য কোনো ফাইল বদলায়নি)।
   ========================================================== */
:root {
    --ui-radius: 18px;
    --ui-radius-sm: 12px;
    --ui-line: #d8e3df;
    --ui-line-soft: rgba(0, 106, 78, 0.10);
    --ui-ring: 0 0 0 3px rgba(0, 106, 78, 0.20);
    --ui-shadow: 0 8px 26px rgba(0, 60, 44, 0.08);
    --ui-shadow-hover: 0 12px 30px rgba(0, 60, 44, 0.14);
    --ui-ok-bg: #e8f6ef;  --ui-ok-fg: #0b6b45;  --ui-ok-line: #bfe6d2;
    --ui-err-bg: #fdecee; --ui-err-fg: #b3232f; --ui-err-line: #f6c4c9;
    --ui-info-bg: #eaf3fb; --ui-info-fg: #1c5a8f; --ui-info-line: #c4dcf0;
}
body.dark-mode {
    --ui-line: rgba(255, 255, 255, 0.14);
    --ui-line-soft: rgba(255, 255, 255, 0.08);
    --ui-ring: 0 0 0 3px rgba(79, 209, 165, 0.28);
    --ui-shadow: 0 8px 26px rgba(0, 0, 0, 0.38);
    --ui-shadow-hover: 0 12px 30px rgba(0, 0, 0, 0.5);
    --ui-ok-bg: rgba(79, 209, 165, 0.12);  --ui-ok-fg: #7fe3bd;  --ui-ok-line: rgba(79, 209, 165, 0.3);
    --ui-err-bg: rgba(244, 42, 65, 0.14);  --ui-err-fg: #ff9aa4; --ui-err-line: rgba(244, 42, 65, 0.35);
    --ui-info-bg: rgba(80, 160, 230, 0.14); --ui-info-fg: #9ccbf2; --ui-info-line: rgba(80, 160, 230, 0.32);
}

/* ---------- মূল ভিত্তি ---------- */
html { -webkit-text-size-adjust: 100%; }
body { line-height: 1.65; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; text-rendering: optimizeLegibility; }
::selection { background: rgba(0, 106, 78, 0.22); }
button, input, select, textarea { font-family: inherit; }
img, video { max-width: 100%; }

/* ---------- পটভূমি: সব পেজে একই শান্ত সুর ---------- */
/* প্রবেশের পেজ (হোম, লগইন, রেজিস্ট্রেশন): রঙিন নড়াচড়ার বদলে গাঢ় সবুজের স্থির গ্রেডিয়েন্ট */
body:not(.app-bg) {
    background: linear-gradient(165deg, #00402f 0%, #006a4e 48%, #0b8260 100%);
    background-attachment: fixed;
    animation: none;
}
body.dark-mode:not(.app-bg) { background: linear-gradient(165deg, #07110e 0%, #0d1f1a 55%, #112a22 100%); background-attachment: fixed; }
/* ভেতরের পেজ (ড্যাশবোর্ড, ছুটি ব্যবস্থাপনা): একই হালকা সবুজাভ পটভূমি — ভূমিকাভেদে রঙ আলাদা নয় */
body.app-bg,
body.lv-bg-officer, body.lv-bg-commander, body.lv-bg-member, body.lv-bg-commandant, body.lv-bg-range, body.lv-bg-admin {
    background: #eef4f2;
    background-image:
        radial-gradient(ellipse 900px 500px at 8% -5%, rgba(0, 106, 78, 0.09), transparent 60%),
        radial-gradient(ellipse 700px 500px at 100% 8%, rgba(242, 169, 0, 0.07), transparent 60%),
        linear-gradient(180deg, #f4f8f6 0%, #eef4f2 45%, #e9f1ee 100%);
    background-attachment: fixed;
    animation: none;
}
body.dark-mode.app-bg,
body.dark-mode.lv-bg-officer, body.dark-mode.lv-bg-commander, body.dark-mode.lv-bg-member, body.dark-mode.lv-bg-commandant, body.dark-mode.lv-bg-range, body.dark-mode.lv-bg-admin {
    background: #0e1614;
    background-image: radial-gradient(ellipse 900px 500px at 8% -5%, rgba(79, 209, 165, 0.07), transparent 60%);
}

/* ---------- কার্ড ---------- */
.auth-card, .lv-card, .lv-hero, .lv-stat, .post-card, .composer-card, .sec-section {
    border-radius: var(--ui-radius);
    box-shadow: var(--ui-shadow);
}
.lv-card, .lv-hero, .lv-stat, .post-card, .composer-card { border: 1px solid var(--ui-line-soft); }
.lv-hero { border-top: 4px solid var(--primary-green); }

/* ---------- ইনপুট: গোল কোণ, একই বর্ডার, স্পষ্ট ফোকাস ---------- */
.form-control,
.lv-form input[type=text], .lv-form input[type=password], .lv-form input[type=tel], .lv-form input[type=date],
.lv-form input[type=number], .lv-form input[type=search], .lv-form input[type=email], .lv-form select, .lv-form textarea,
.lv-inline input[type=search], .lv-inline input[type=text] {
    border-radius: var(--ui-radius-sm);
    border: 1.5px solid var(--ui-line);
    min-height: 46px;
    transition: border-color .18s ease, box-shadow .18s ease, background-color .18s ease;
}
.lv-form textarea, textarea.form-control { min-height: 90px; }
.form-control:focus,
.lv-form input:focus, .lv-form select:focus, .lv-form textarea:focus,
.lv-inline input:focus {
    border-color: var(--primary-green);
    box-shadow: var(--ui-ring);
    outline: none;
}
::placeholder { color: #98a8a3; opacity: 1; }
body.dark-mode ::placeholder { color: #7d918c; }
.lv-pin, .code-input { letter-spacing: 6px; font-weight: 700; text-align: center; }

/* কীবোর্ড ব্যবহারকারীর জন্য একই ফোকাস-রিং */
a:focus-visible, button:focus-visible, summary:focus-visible, [tabindex]:focus-visible {
    outline: 3px solid rgba(0, 106, 78, 0.55);
    outline-offset: 2px;
    border-radius: 8px;
}
body.dark-mode a:focus-visible, body.dark-mode button:focus-visible { outline-color: rgba(79, 209, 165, 0.7); }

/* ---------- বাটন: একই উচ্চতা, গোল কোণ, চাপ দিলে সামান্য সংকোচন ---------- */
.btn, .lv-btn, .composer-submit {
    border-radius: var(--ui-radius-sm);
    font-weight: 700;
    min-height: 46px;
    transition: transform .18s ease, box-shadow .18s ease, background .18s ease, opacity .18s ease;
}
.lv-btn.sm { min-height: 36px; }
.btn:active:not(:disabled), .lv-btn:active:not(:disabled) { transform: scale(.98); }
.btn:disabled, .lv-btn:disabled, .composer-submit:disabled { opacity: .65; cursor: not-allowed; }
.lv-btn:hover:not(:disabled) { box-shadow: var(--ui-shadow-hover); }

/* ---------- বার্তা (সফল / ভুল / তথ্য) — সব পেজে একই রং ---------- */
.auth-msg, .lv-flash { border-radius: var(--ui-radius-sm); border: 1px solid; font-weight: 600; line-height: 1.6; }
.auth-msg.success, .lv-flash.ok { background: var(--ui-ok-bg); color: var(--ui-ok-fg); border-color: var(--ui-ok-line); }
.auth-msg.error, .lv-flash.err { background: var(--ui-err-bg); color: var(--ui-err-fg); border-color: var(--ui-err-line); }
.auth-msg.info { background: var(--ui-info-bg); color: var(--ui-info-fg); border-color: var(--ui-info-line); }

/* ---------- ছোট ছোট সূক্ষ্মতা ---------- */
.lv-badge, .lv-count { border-radius: 999px; }
table { border-collapse: collapse; }
hr { border: 0; border-top: 1px solid var(--ui-line-soft); }
* { scrollbar-width: thin; scrollbar-color: rgba(0, 106, 78, 0.35) transparent; }
body.dark-mode * { scrollbar-color: rgba(79, 209, 165, 0.35) transparent; }

/* ---------- মোবাইলে: ছোঁয়ার জায়গা বড়, ইনপুটে জুম বন্ধ ---------- */
@media (max-width: 640px) {
    input, select, textarea { font-size: 16px; }
    main.lv-main { padding-left: 10px; padding-right: 10px; }
}

/* ---------- যাদের নড়াচড়া অস্বস্তিকর ---------- */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}
