SPB Git forge

spb/uqo-eval

Public
55commits 2branches 0releases
134.4 MBsize
maindefault branch
3 h agolast push
TypeScript 90.1% JavaScript 3.2% Python 3.2% CSS 1.8% HTML 1.8%

Manuel PDF : couverture pleine page (grille, métadonnées, strip UQO), avis+sommaire regroupés, une section par page, marges d'impression 15 mm, images cadrées max 150 mm

Simon-Pierre Boucher committed 1 mo ago (Aug 28, 2026) parent 93448be

2 changed files +76 −30

modified public/guide/index.html +76 −30
@@ -23,24 +23,31 @@
23 23 img.shot{width:100%;height:auto;display:block;border:1px solid rgba(22,24,27,.5);border-radius:2px}
24 24 figure{margin:22px 0 8px}
25 25 figcaption{font-family:"JetBrains Mono",monospace;font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--gris-2);margin-top:8px}
26 − /* couverture */
27 − header.cover{background:var(--encre-nuit);color:#e9edee;padding:56px 0 40px}
26 + /* couverture — pleine page, grille discrète, métadonnées en pied */
27 + header.cover{position:relative;background:var(--encre-nuit);color:#e9edee;overflow:hidden}
28 + .cover-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(43,204,174,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(43,204,174,.06) 1px,transparent 1px);background-size:56px 56px}
29 + .cover-inner{position:relative;display:flex;flex-direction:column;justify-content:space-between;gap:44px;min-height:min(92vh,900px);padding-top:56px;padding-bottom:44px}
28 30 .cover .logo{display:flex;align-items:flex-end;gap:16px}
29 − .cover .logo img{height:52px;width:auto}
30 − .cover .logo .eval{font-family:"Space Grotesk",Inter,sans-serif;font-weight:700;font-size:44px;line-height:.9;letter-spacing:-.04em;color:var(--turquoise)}
31 − .kick{display:inline-flex;align-items:center;gap:10px;font-family:"JetBrains Mono",monospace;font-size:11.5px;font-weight:500;text-transform:uppercase;letter-spacing:.16em;color:var(--turquoise);margin-top:26px}
32 − .kick::before{content:"";width:22px;height:2px;background:var(--turquoise)}
33 − h1{font-family:"Space Grotesk",Inter,sans-serif;font-weight:700;font-size:clamp(34px,6vw,58px);line-height:1;letter-spacing:-.03em;text-transform:uppercase;margin-top:14px}
34 − .cover p.lede{max-width:620px;margin-top:16px;color:rgba(233,237,238,.75);font-size:15.5px}
35 − .cover .cours{margin-top:22px;border-left:3px solid var(--turquoise);padding:8px 0 8px 16px;font-size:13.5px;color:rgba(233,237,238,.85)}
36 − .cover .cours b{color:#fff}
31 + .cover .logo img{height:56px;width:auto}
32 + .cover .logo .eval{font-family:"Space Grotesk",Inter,sans-serif;font-weight:700;font-size:48px;line-height:.9;letter-spacing:-.04em;color:var(--turquoise)}
33 + .kick{display:inline-flex;align-items:center;gap:10px;font-family:"JetBrains Mono",monospace;font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.18em;color:var(--turquoise)}
34 + .kick::before{content:"";width:26px;height:2px;background:var(--turquoise)}
35 + h1{font-family:"Space Grotesk",Inter,sans-serif;font-weight:700;font-size:clamp(38px,7vw,72px);line-height:.98;letter-spacing:-.03em;text-transform:uppercase;margin-top:16px}
36 + .cover p.lede{max-width:600px;margin-top:20px;color:rgba(233,237,238,.75);font-size:15.5px}
37 + .cover-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:18px 32px;border-top:1px solid rgba(233,237,238,.22);padding-top:22px}
38 + .cover-meta .k{display:block;font-family:"JetBrains Mono",monospace;font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.14em;color:var(--turquoise)}
39 + .cover-meta .v{display:block;margin-top:5px;font-family:"Space Grotesk",Inter,sans-serif;font-weight:700;font-size:13.5px;line-height:1.35;color:#fff}
40 + .cover-strip{margin-top:26px;height:6px;background:var(--bleu);position:relative}
41 + .cover-strip::after{content:"";position:absolute;left:0;top:0;bottom:0;width:30%;background:var(--turquoise)}
42 + .cover-note{margin-top:14px;font-family:"JetBrains Mono",monospace;font-size:9.5px;text-transform:uppercase;letter-spacing:.06em;color:rgba(233,237,238,.5)}
37 43 .bar{height:8px;background:var(--bleu);position:relative}
38 44 .bar::after{content:"";position:absolute;left:0;top:0;bottom:0;width:30%;background:var(--turquoise)}
39 45 /* avis pédagogique */
40 46 .avis{background:var(--surface);border:1px solid var(--ligne);border-left:4px solid var(--bleu);padding:16px 18px;margin:28px 0;font-size:13.5px;color:var(--gris)}
41 47 .avis b{color:var(--encre)}
42 48 /* sommaire */
43 − nav.toc{margin:34px 0 8px}
49 + nav.toc{margin:40px 0 8px}
50 + nav.toc ol{margin-top:18px}
44 51 nav.toc ol{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:2px 28px}
45 52 nav.toc a{display:flex;gap:10px;align-items:baseline;padding:9px 2px;border-bottom:1px solid var(--ligne);text-decoration:none;color:var(--encre);font-weight:600;font-size:13.5px}
46 53 nav.toc a:hover{color:var(--bleu)}
@@ -75,34 +82,71 @@
75 82 .retour{display:inline-block;margin-top:18px;font-family:"JetBrains Mono",monospace;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--turquoise)}
76 83 /* impression / PDF */
77 84 @media print{
78 − body{background:#fff}
79 − header.cover{page-break-after:always}
80 − section{page-break-inside:auto}
81 − figure{page-break-inside:avoid}
82 − nav.toc{page-break-after:always}
85 + @page{size:A4}
86 + body{background:#fff;font-size:12.5px}
87 + .wrap{max-width:none;padding:0 15mm}
88 + /* couverture = première page entière (marge PDF basse 24px déjà réservée) */
89 + header.cover{page-break-after:always;height:279mm}
90 + .cover-inner{min-height:100%;height:100%;padding-top:20mm;padding-bottom:16mm}
91 + .cover .logo img{height:60px}
92 + h1{font-size:52pt}
93 + .bar{display:none}
94 + .avis{margin-top:10mm;margin-bottom:8mm}
95 + /* sommaire : sa propre page, une colonne lisible */
96 + nav.toc{page-break-after:always;margin:0;padding-top:6mm}
97 + nav.toc ol{grid-template-columns:1fr 1fr;gap:0 12mm}
98 + nav.toc a{padding:10px 2px;font-size:12.5px}
99 + /* chaque section démarre sur une page neuve */
100 + section{page-break-before:always;margin:0;padding-top:8mm}
101 + .sec-head{border-top-width:2.5px}
102 + h2{font-size:21pt}
103 + section p, ul.pts, table.tbl, .astuce, .formule{max-width:none}
104 + /* images : jamais coupées, jamais plus hautes qu'une page */
105 + figure{page-break-inside:avoid;margin:16px 0 6px}
106 + img.shot{max-height:150mm;width:auto;max-width:100%;margin:0 auto;box-shadow:none}
107 + .grid2{grid-template-columns:1fr 1fr;gap:14px}
108 + .grid2 img.shot{max-height:110mm}
109 + ul.pts li{page-break-inside:avoid}
110 + table.tbl tr{page-break-inside:avoid}
111 + .astuce,.formule,.avis{page-break-inside:avoid}
112 + a{color:var(--bleu);text-decoration:none}
83 113 .retour{display:none}
114 + footer.fin{page-break-before:always;background:var(--encre-nuit)!important;-webkit-print-color-adjust:exact;padding:20mm 0}
84 115 }
116 + /* couleurs fidèles à l'impression */
117 + *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
85 118 </style>
86 119 </head>
87 120 <body>
88 121
89 122 <!-- ================= COUVERTURE ================= -->
90 123 <header class="cover">
91 − <div class="wrap">
92 − <div class="logo">
93 − <img src="/uqo/uqo-blanc.svg" alt="UQO — Université du Québec en Outaouais">
94 − <span class="eval">Éval</span>
124 + <div class="cover-grid" aria-hidden="true"></div>
125 + <div class="wrap cover-inner">
126 + <div>
127 + <div class="logo">
128 + <img src="/uqo/uqo-blanc.svg" alt="UQO — Université du Québec en Outaouais">
129 + <span class="eval">Éval</span>
130 + </div>
131 + </div>
132 + <div>
133 + <span class="kick">Manuel d'utilisation</span>
134 + <h1>Le laboratoire<br>pédagogique<br>d'évaluation<br>immobilière</h1>
135 + <p class="lede">Ce manuel présente, écran par écran, toutes les fonctionnalités de la plateforme
136 + <b style="color:#fff">UQO Éval</b> : recherche d'une propriété, lecture d'une estimation,
137 + mode étudiant, comparables, carte, statistiques, parc immobilier, assistante IA
138 + et rapports PDF.</p>
95 139 </div>
96 − <span class="kick">Manuel d'utilisation</span>
97 − <h1>Le laboratoire pédagogique<br>d'évaluation immobilière</h1>
98 − <p class="lede">Ce manuel présente, écran par écran, toutes les fonctionnalités de la plateforme
99 − <b style="color:#fff">UQO Éval</b> (www.uqo-eval.app) : recherche d'une propriété, lecture d'une
100 − estimation, mode étudiant, comparables, carte, statistiques, parc immobilier, assistante IA
101 − et rapports PDF.</p>
102 − <div class="cours">
103 − Développée dans le cadre des cours <b>IMM1003 — Éléments d'évaluation immobilière</b> et
104 − <b>IMM1033 — Méthodes du coût en évaluation immobilière</b>, enseignés par
105 − <b>Simon-Pierre Boucher</b> — Université du Québec en Outaouais.
140 + <div>
141 + <div class="cover-meta">
142 + <div><span class="k">Plateforme</span><span class="v">www.uqo-eval.app</span></div>
143 + <div><span class="k">Édition</span><span class="v">1.0 — août 2026</span></div>
144 + <div><span class="k">Cours</span><span class="v">IMM1003 — Éléments d'évaluation immobilière<br>IMM1033 — Méthodes du coût en évaluation immobilière</span></div>
145 + <div><span class="k">Enseignant</span><span class="v">Simon-Pierre Boucher<br>Université du Québec en Outaouais</span></div>
146 + </div>
147 + <div class="cover-strip" aria-hidden="true"></div>
148 + <p class="cover-note">Plateforme à vocation pédagogique, universitaire et expérimentale —
149 + les estimations ne constituent pas une évaluation professionnelle certifiée (OEAQ).</p>
106 150 </div>
107 151 </div>
108 152 </header>
@@ -121,6 +165,8 @@
121 165
122 166 <!-- ================= SOMMAIRE ================= -->
123 167 <nav class="toc" aria-label="Sommaire">
168 + <div class="sec-head"><span class="sec-num">Sommaire</span>
169 + <h2>Quatorze sections, tout le laboratoire</h2></div>
124 170 <ol>
125 171 <li><a href="#s1"><span class="n">01</span> La page d'accueil</a></li>
126 172 <li><a href="#s2"><span class="n">02</span> Analyser une propriété (recherche)</a></li>
modified public/guide/uqo-eval-manuel.pdf +0 −0

Binary file not shown.