25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

863 satır
16KB

  1. :root {
  2. --page-background: #f4efe7;
  3. --surface: rgba(255, 252, 247, 0.88);
  4. --surface-strong: #fffdf8;
  5. --surface-border: rgba(26, 72, 64, 0.12);
  6. --text-primary: #143631;
  7. --text-secondary: #4f655f;
  8. --accent: #1d7a6d;
  9. --accent-strong: #135c52;
  10. --accent-soft: #daf1ec;
  11. --highlight: #ef7c4d;
  12. --shadow-soft: 0 18px 50px rgba(20, 54, 49, 0.1);
  13. --shadow-card: 0 20px 40px rgba(20, 54, 49, 0.08);
  14. }
  15. * {
  16. box-sizing: border-box;
  17. }
  18. html {
  19. scroll-behavior: smooth;
  20. }
  21. body {
  22. margin: 0;
  23. min-height: 100vh;
  24. font-family: "Trebuchet MS", "Lucida Sans Unicode", "Lucida Grande", sans-serif;
  25. color: var(--text-primary);
  26. background:
  27. radial-gradient(circle at top left, rgba(239, 124, 77, 0.18), transparent 28%),
  28. radial-gradient(circle at top right, rgba(29, 122, 109, 0.18), transparent 32%),
  29. linear-gradient(180deg, #f8f2e8 0%, var(--page-background) 48%, #efe6da 100%);
  30. }
  31. a {
  32. color: inherit;
  33. }
  34. code {
  35. font-family: Consolas, "Courier New", monospace;
  36. }
  37. .page-shell {
  38. min-height: 100vh;
  39. display: flex;
  40. flex-direction: column;
  41. }
  42. .container {
  43. width: min(1120px, calc(100% - 2rem));
  44. margin: 0 auto;
  45. }
  46. .site-header {
  47. position: sticky;
  48. top: 0;
  49. z-index: 20;
  50. backdrop-filter: blur(14px);
  51. background: rgba(248, 242, 232, 0.78);
  52. border-bottom: 1px solid rgba(20, 54, 49, 0.08);
  53. }
  54. .header-inner {
  55. display: flex;
  56. align-items: center;
  57. justify-content: space-between;
  58. gap: 1rem;
  59. padding: 1rem 0;
  60. }
  61. .brand {
  62. display: inline-flex;
  63. align-items: center;
  64. gap: 0.85rem;
  65. text-decoration: none;
  66. }
  67. .brand-mark {
  68. display: inline-flex;
  69. align-items: center;
  70. justify-content: center;
  71. width: 2.75rem;
  72. height: 2.75rem;
  73. border-radius: 0.95rem;
  74. background: linear-gradient(135deg, var(--accent), var(--highlight));
  75. color: #fff;
  76. font-weight: 700;
  77. letter-spacing: 0.08em;
  78. box-shadow: var(--shadow-soft);
  79. }
  80. .brand-copy {
  81. display: flex;
  82. flex-direction: column;
  83. line-height: 1.1;
  84. }
  85. .brand-copy strong {
  86. font-size: 1rem;
  87. }
  88. .brand-copy small {
  89. color: var(--text-secondary);
  90. font-size: 0.75rem;
  91. text-transform: uppercase;
  92. letter-spacing: 0.14em;
  93. }
  94. .site-nav {
  95. display: flex;
  96. align-items: center;
  97. gap: 0.6rem;
  98. flex-wrap: wrap;
  99. }
  100. .nav-link {
  101. text-decoration: none;
  102. color: var(--text-secondary);
  103. font-weight: 600;
  104. padding: 0.7rem 1rem;
  105. border-radius: 999px;
  106. transition: background-color 160ms ease, color 160ms ease, transform 160ms ease;
  107. }
  108. .nav-link:hover,
  109. .nav-link:focus-visible,
  110. .nav-link.is-active {
  111. color: var(--accent-strong);
  112. background: rgba(29, 122, 109, 0.12);
  113. transform: translateY(-1px);
  114. }
  115. .page-content {
  116. flex: 1;
  117. padding: 3.5rem 0 4rem;
  118. }
  119. .content-stack {
  120. display: grid;
  121. gap: 1.5rem;
  122. }
  123. .section-heading {
  124. max-width: 46rem;
  125. }
  126. .section-heading h1 {
  127. margin: 0.3rem 0 0.8rem;
  128. font-size: clamp(2.4rem, 5vw, 4rem);
  129. line-height: 1;
  130. letter-spacing: -0.04em;
  131. }
  132. .section-heading p {
  133. margin: 0;
  134. color: var(--text-secondary);
  135. line-height: 1.8;
  136. font-size: 1.05rem;
  137. }
  138. .hero {
  139. display: grid;
  140. grid-template-columns: minmax(0, 1.5fr) minmax(280px, 0.9fr);
  141. gap: 1.5rem;
  142. align-items: stretch;
  143. }
  144. .hero-copy,
  145. .hero-panel,
  146. .feature-card,
  147. .section-panel,
  148. .alert,
  149. .empty-state {
  150. background: var(--surface);
  151. border: 1px solid var(--surface-border);
  152. box-shadow: var(--shadow-card);
  153. }
  154. .hero-copy {
  155. padding: 3rem;
  156. border-radius: 2rem;
  157. }
  158. .eyebrow {
  159. display: inline-block;
  160. margin-bottom: 1rem;
  161. padding: 0.4rem 0.75rem;
  162. border-radius: 999px;
  163. background: var(--accent-soft);
  164. color: var(--accent-strong);
  165. font-size: 0.78rem;
  166. font-weight: 700;
  167. text-transform: uppercase;
  168. letter-spacing: 0.14em;
  169. }
  170. .hero h1 {
  171. margin: 0;
  172. font-size: clamp(2.8rem, 6vw, 4.8rem);
  173. line-height: 0.98;
  174. letter-spacing: -0.04em;
  175. }
  176. .hero-text {
  177. max-width: 44rem;
  178. margin: 1.25rem 0 0;
  179. font-size: 1.12rem;
  180. line-height: 1.8;
  181. color: var(--text-secondary);
  182. }
  183. .hero-actions {
  184. display: flex;
  185. flex-wrap: wrap;
  186. gap: 0.85rem;
  187. margin-top: 2rem;
  188. }
  189. .button {
  190. display: inline-flex;
  191. align-items: center;
  192. justify-content: center;
  193. padding: 0.9rem 1.35rem;
  194. border-radius: 999px;
  195. text-decoration: none;
  196. font-weight: 700;
  197. }
  198. .button-primary {
  199. background: linear-gradient(135deg, var(--accent), var(--accent-strong));
  200. color: #fff;
  201. box-shadow: 0 18px 30px rgba(19, 92, 82, 0.25);
  202. }
  203. .button-secondary {
  204. background: rgba(29, 122, 109, 0.08);
  205. color: var(--accent-strong);
  206. }
  207. .hero-panel {
  208. display: flex;
  209. flex-direction: column;
  210. justify-content: space-between;
  211. padding: 2rem;
  212. border-radius: 1.8rem;
  213. }
  214. .panel-label {
  215. margin: 0 0 1rem;
  216. font-size: 0.78rem;
  217. font-weight: 700;
  218. letter-spacing: 0.16em;
  219. text-transform: uppercase;
  220. color: var(--text-secondary);
  221. }
  222. .hero-panel code {
  223. display: block;
  224. padding: 1rem 1.1rem;
  225. border-radius: 1.2rem;
  226. background: #173d37;
  227. color: #eefbf6;
  228. line-height: 1.7;
  229. white-space: normal;
  230. }
  231. .route-callout {
  232. margin-top: 1.5rem;
  233. padding: 1rem 1.1rem;
  234. border-radius: 1.2rem;
  235. background: var(--surface-strong);
  236. }
  237. .route-callout span {
  238. display: block;
  239. margin-bottom: 0.45rem;
  240. color: var(--text-secondary);
  241. font-size: 0.92rem;
  242. }
  243. .route-callout a {
  244. color: var(--highlight);
  245. font-weight: 700;
  246. text-decoration: none;
  247. }
  248. .feature-grid {
  249. display: grid;
  250. grid-template-columns: repeat(3, minmax(0, 1fr));
  251. gap: 1.25rem;
  252. margin-top: 1.5rem;
  253. }
  254. .feature-card {
  255. padding: 1.75rem;
  256. border-radius: 1.6rem;
  257. }
  258. .feature-card h2 {
  259. margin-top: 0;
  260. margin-bottom: 0.8rem;
  261. font-size: 1.25rem;
  262. }
  263. .feature-card p {
  264. margin: 0;
  265. color: var(--text-secondary);
  266. line-height: 1.7;
  267. }
  268. .section-panel {
  269. padding: 1.75rem;
  270. border-radius: 1.8rem;
  271. }
  272. .panel-header {
  273. margin-bottom: 1.5rem;
  274. }
  275. .panel-header h2 {
  276. margin: 0 0 0.45rem;
  277. font-size: 1.45rem;
  278. }
  279. .panel-header p {
  280. margin: 0;
  281. color: var(--text-secondary);
  282. line-height: 1.7;
  283. }
  284. .form-grid {
  285. display: grid;
  286. grid-template-columns: repeat(2, minmax(0, 1fr));
  287. gap: 1rem;
  288. }
  289. .field {
  290. display: grid;
  291. gap: 0.45rem;
  292. font-weight: 600;
  293. }
  294. .field span {
  295. font-size: 0.96rem;
  296. }
  297. .input {
  298. width: 100%;
  299. padding: 0.95rem 1rem;
  300. border: 1px solid rgba(20, 54, 49, 0.16);
  301. border-radius: 1rem;
  302. background: rgba(255, 255, 255, 0.92);
  303. color: var(--text-primary);
  304. font: inherit;
  305. }
  306. .input:focus {
  307. outline: 2px solid rgba(29, 122, 109, 0.22);
  308. border-color: rgba(29, 122, 109, 0.45);
  309. }
  310. .field-error {
  311. color: #a43d1f;
  312. font-size: 0.88rem;
  313. font-weight: 600;
  314. }
  315. .form-actions {
  316. display: flex;
  317. justify-content: flex-start;
  318. align-items: center;
  319. gap: 0.85rem;
  320. }
  321. .button {
  322. border: 0;
  323. cursor: pointer;
  324. }
  325. .alert,
  326. .empty-state {
  327. padding: 1rem 1.15rem;
  328. border-radius: 1.2rem;
  329. }
  330. .alert-success {
  331. background: rgba(218, 241, 236, 0.92);
  332. color: var(--accent-strong);
  333. }
  334. .alert-error {
  335. background: rgba(239, 124, 77, 0.14);
  336. color: #8f3518;
  337. }
  338. .empty-state p {
  339. margin: 0;
  340. color: var(--text-secondary);
  341. line-height: 1.7;
  342. }
  343. .empty-state p + p {
  344. margin-top: 0.45rem;
  345. }
  346. .site-footer {
  347. margin-top: auto;
  348. border-top: 1px solid rgba(20, 54, 49, 0.08);
  349. background: rgba(255, 252, 247, 0.72);
  350. }
  351. .footer-inner {
  352. display: flex;
  353. justify-content: space-between;
  354. gap: 1rem;
  355. padding: 1.25rem 0 2rem;
  356. color: var(--text-secondary);
  357. font-size: 0.95rem;
  358. }
  359. .footer-inner p {
  360. margin: 0;
  361. }
  362. @media (max-width: 860px) {
  363. .header-inner,
  364. .footer-inner {
  365. flex-direction: column;
  366. align-items: flex-start;
  367. }
  368. .hero,
  369. .feature-grid {
  370. grid-template-columns: 1fr;
  371. }
  372. .hero-copy,
  373. .hero-panel {
  374. padding: 2rem;
  375. }
  376. .form-grid {
  377. grid-template-columns: 1fr;
  378. }
  379. .page-content {
  380. padding-top: 2rem;
  381. }
  382. }
  383. @media (max-width: 560px) {
  384. .container {
  385. width: min(100% - 1.25rem, 1120px);
  386. }
  387. .site-nav {
  388. width: 100%;
  389. }
  390. .nav-link {
  391. width: 100%;
  392. text-align: center;
  393. }
  394. .hero h1 {
  395. font-size: 2.5rem;
  396. }
  397. }
  398. /* ── Auth / Login ─────────────────────────────────────── */
  399. .auth-wrap {
  400. display: flex;
  401. justify-content: center;
  402. align-items: flex-start;
  403. padding: 2rem 0;
  404. }
  405. .auth-card {
  406. width: 100%;
  407. max-width: 460px;
  408. background: var(--surface);
  409. border: 1px solid var(--surface-border);
  410. box-shadow: var(--shadow-card);
  411. border-radius: 2rem;
  412. padding: 2.5rem 2.5rem 2rem;
  413. display: grid;
  414. gap: 1.5rem;
  415. }
  416. .auth-card-header {
  417. display: grid;
  418. gap: 0.4rem;
  419. }
  420. .auth-card-title {
  421. margin: 0;
  422. font-size: 2rem;
  423. letter-spacing: -0.04em;
  424. line-height: 1.1;
  425. }
  426. .auth-card-subtitle {
  427. margin: 0;
  428. color: var(--text-secondary);
  429. font-size: 0.97rem;
  430. line-height: 1.6;
  431. }
  432. .auth-form {
  433. display: grid;
  434. gap: 1.1rem;
  435. }
  436. .auth-remember {
  437. display: flex;
  438. align-items: center;
  439. gap: 0.55rem;
  440. font-size: 0.93rem;
  441. color: var(--text-secondary);
  442. cursor: pointer;
  443. }
  444. .auth-remember input[type="checkbox"] {
  445. width: 1rem;
  446. height: 1rem;
  447. accent-color: var(--accent);
  448. cursor: pointer;
  449. }
  450. .auth-submit {
  451. width: 100%;
  452. justify-content: center;
  453. padding: 0.95rem;
  454. font-size: 1rem;
  455. margin-top: 0.25rem;
  456. }
  457. .auth-nav-form {
  458. display: inline;
  459. margin: 0;
  460. padding: 0;
  461. }
  462. .auth-nav-btn {
  463. background: none;
  464. border: none;
  465. padding: 0.7rem 1rem;
  466. font: inherit;
  467. font-weight: 600;
  468. color: var(--text-secondary);
  469. border-radius: 999px;
  470. cursor: pointer;
  471. transition: background-color 160ms ease, color 160ms ease, transform 160ms ease;
  472. }
  473. .auth-nav-btn:hover,
  474. .auth-nav-btn:focus-visible {
  475. color: var(--accent-strong);
  476. background: rgba(29, 122, 109, 0.12);
  477. transform: translateY(-1px);
  478. }
  479. /* ── Page header ──────────────────────────────────────── */
  480. .page-header {
  481. display: flex;
  482. align-items: flex-start;
  483. justify-content: space-between;
  484. gap: 1rem;
  485. margin-bottom: 1.5rem;
  486. flex-wrap: wrap;
  487. }
  488. .page-header h1 {
  489. margin: 0;
  490. font-size: clamp(1.6rem, 4vw, 2.4rem);
  491. letter-spacing: -0.03em;
  492. line-height: 1.1;
  493. }
  494. .page-header-actions {
  495. display: flex;
  496. gap: 0.6rem;
  497. flex-wrap: wrap;
  498. align-items: center;
  499. }
  500. .button-sm {
  501. padding: 0.5rem 0.85rem;
  502. font-size: 0.875rem;
  503. }
  504. .button-danger {
  505. background: rgba(239, 124, 77, 0.14);
  506. color: #8f3518;
  507. }
  508. .button-danger:hover,
  509. .button-danger:focus-visible {
  510. background: rgba(239, 124, 77, 0.28);
  511. }
  512. /* ── Alerts (flash) ───────────────────────────────────── */
  513. .alert {
  514. margin-bottom: 1.25rem;
  515. }
  516. /* ── Badges ───────────────────────────────────────────── */
  517. .badge {
  518. display: inline-block;
  519. padding: 0.2rem 0.55rem;
  520. border-radius: 999px;
  521. font-size: 0.72rem;
  522. font-weight: 700;
  523. letter-spacing: 0.06em;
  524. text-transform: uppercase;
  525. vertical-align: middle;
  526. }
  527. .badge-danger {
  528. background: rgba(239, 124, 77, 0.18);
  529. color: #8f3518;
  530. }
  531. .badge-warning {
  532. background: rgba(239, 200, 77, 0.22);
  533. color: #6b4a00;
  534. }
  535. .badge-success {
  536. background: var(--accent-soft);
  537. color: var(--accent-strong);
  538. }
  539. /* ── Filter bar ───────────────────────────────────────── */
  540. .filter-bar {
  541. display: flex;
  542. gap: 0.75rem;
  543. flex-wrap: wrap;
  544. align-items: flex-end;
  545. margin-bottom: 1.5rem;
  546. }
  547. .filter-bar .field {
  548. min-width: 160px;
  549. }
  550. /* ── Data table ───────────────────────────────────────── */
  551. .table-responsive {
  552. overflow-x: auto;
  553. border-radius: 1rem;
  554. }
  555. .data-table {
  556. width: 100%;
  557. border-collapse: collapse;
  558. font-size: 0.95rem;
  559. }
  560. .data-table th {
  561. text-align: left;
  562. padding: 0.7rem 1rem;
  563. font-weight: 700;
  564. font-size: 0.75rem;
  565. text-transform: uppercase;
  566. letter-spacing: 0.08em;
  567. color: var(--text-secondary);
  568. border-bottom: 2px solid var(--surface-border);
  569. white-space: nowrap;
  570. }
  571. .data-table td {
  572. padding: 0.75rem 1rem;
  573. border-bottom: 1px solid var(--surface-border);
  574. vertical-align: middle;
  575. }
  576. .data-table tbody tr:last-child td {
  577. border-bottom: none;
  578. }
  579. .data-table tbody tr:hover td {
  580. background: rgba(29, 122, 109, 0.035);
  581. }
  582. .data-table a {
  583. color: var(--accent);
  584. font-weight: 600;
  585. text-decoration: none;
  586. }
  587. .data-table a:hover {
  588. color: var(--accent-strong);
  589. text-decoration: underline;
  590. }
  591. .table-actions {
  592. display: flex;
  593. gap: 0.4rem;
  594. flex-wrap: nowrap;
  595. }
  596. /* ── Inline form (for delete buttons in tables) ───────── */
  597. .inline-form {
  598. display: inline;
  599. margin: 0;
  600. padding: 0;
  601. }
  602. /* ── Pagination ───────────────────────────────────────── */
  603. .pagination {
  604. display: flex;
  605. align-items: center;
  606. gap: 0.3rem;
  607. flex-wrap: wrap;
  608. margin-top: 1.5rem;
  609. padding-top: 1rem;
  610. border-top: 1px solid var(--surface-border);
  611. }
  612. .page-link {
  613. display: inline-flex;
  614. align-items: center;
  615. justify-content: center;
  616. min-width: 2.2rem;
  617. height: 2.2rem;
  618. padding: 0 0.6rem;
  619. border-radius: 999px;
  620. text-decoration: none;
  621. font-weight: 600;
  622. font-size: 0.88rem;
  623. color: var(--text-secondary);
  624. transition: background-color 140ms, color 140ms;
  625. }
  626. .page-link:hover {
  627. background: rgba(29, 122, 109, 0.1);
  628. color: var(--accent-strong);
  629. }
  630. .page-link.is-active {
  631. background: var(--accent);
  632. color: #fff;
  633. pointer-events: none;
  634. }
  635. .pagination-meta {
  636. margin-left: 0.5rem;
  637. font-size: 0.82rem;
  638. color: var(--text-secondary);
  639. }
  640. /* ── Detail list (show pages) ─────────────────────────── */
  641. .detail-list {
  642. display: grid;
  643. grid-template-columns: 10rem 1fr;
  644. gap: 0.6rem 1.25rem;
  645. margin: 0;
  646. }
  647. .detail-list dt {
  648. font-weight: 700;
  649. font-size: 0.82rem;
  650. text-transform: uppercase;
  651. letter-spacing: 0.08em;
  652. color: var(--text-secondary);
  653. padding-top: 0.1rem;
  654. }
  655. .detail-list dd {
  656. margin: 0;
  657. }
  658. /* ── Checkbox label ───────────────────────────────────── */
  659. .checkbox-label {
  660. display: flex;
  661. align-items: center;
  662. gap: 0.5rem;
  663. font-weight: 600;
  664. cursor: pointer;
  665. }
  666. .checkbox-label input[type="checkbox"] {
  667. width: 1rem;
  668. height: 1rem;
  669. accent-color: var(--accent);
  670. cursor: pointer;
  671. }
  672. /* ── Street chips ─────────────────────────────────────── */
  673. .street-chips {
  674. display: flex;
  675. flex-wrap: wrap;
  676. gap: 0.5rem;
  677. }
  678. /* ── Export checklist ─────────────────────────────────── */
  679. .territory-checklist {
  680. display: grid;
  681. gap: 0.6rem;
  682. margin-bottom: 0.5rem;
  683. }
  684. .territory-item {
  685. padding: 0.6rem 0.75rem;
  686. border: 1px solid var(--surface-border);
  687. border-radius: 0.75rem;
  688. background: var(--surface-strong);
  689. font-weight: 400;
  690. }
  691. .territory-item:has(input:checked) {
  692. border-color: var(--accent);
  693. background: var(--accent-soft);
  694. }
  695. /* ── Utility ──────────────────────────────────────────── */
  696. .text-secondary {
  697. color: var(--text-secondary);
  698. }
  699. select.input {
  700. appearance: auto;
  701. cursor: pointer;
  702. }
  703. textarea.input {
  704. resize: vertical;
  705. min-height: 80px;
  706. }
  707. @media (max-width: 860px) {
  708. .detail-list {
  709. grid-template-columns: 1fr;
  710. gap: 0.2rem;
  711. }
  712. .detail-list dt {
  713. margin-top: 0.75rem;
  714. }
  715. .detail-list dt:first-child {
  716. margin-top: 0;
  717. }
  718. .page-header {
  719. flex-direction: column;
  720. align-items: flex-start;
  721. }
  722. }

Powered by TurnKey Linux.