Add GigaBIT M1 CDR web deck (Reveal.js)
This commit is contained in:
16
decks/gigabit-optique-fullum-cdr/README.md
Normal file
16
decks/gigabit-optique-fullum-cdr/README.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# Gigabit Optique Fullum — CDR Deck (Reveal.js)
|
||||
|
||||
URLs (once deployed to Hostinger):
|
||||
- Gate: `https://atomaste.ca/decks/gigabit-optique-fullum-cdr/enter.html`
|
||||
- Deck: `https://atomaste.ca/decks/gigabit-optique-fullum-cdr/`
|
||||
|
||||
## Security note
|
||||
`enter.html` is a lightweight client-side code gate (not strong security). Use for "share link + code" only.
|
||||
|
||||
## To customize
|
||||
- Edit the access code in `enter.html` (`const CODE = ...`). Current: `stratosphere`.
|
||||
- Replace placeholders in `index.html`.
|
||||
- Add images/plots under `assets/` and reference with `./assets/...`.
|
||||
|
||||
## PDF export
|
||||
Open the deck and print to PDF (browser print) or use Reveal's built-in PDF mode.
|
||||
60
decks/gigabit-optique-fullum-cdr/enter.html
Normal file
60
decks/gigabit-optique-fullum-cdr/enter.html
Normal file
@@ -0,0 +1,60 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Enter code — Atomaste CDR</title>
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
<link rel="icon" type="image/svg+xml" href="/Media/Atomaste_logo_A.svg?v=2">
|
||||
<style>
|
||||
:root { --bg:#0b0f14; --fg:#e8eef7; --muted:#a8b3c2; --accent:#7dd3fc; }
|
||||
body{ margin:0; min-height:100vh; display:grid; place-items:center; background: radial-gradient(900px 600px at 15% 10%, rgba(125,211,252,0.14), transparent 55%), linear-gradient(180deg,#070a0f 0%, var(--bg) 100%); color:var(--fg); font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial; }
|
||||
.card{ width:min(520px, 92vw); border:1px solid rgba(232,238,247,0.14); border-radius:16px; background: rgba(255,255,255,0.03); padding: 24px; }
|
||||
.row{ display:flex; gap:10px; margin-top:12px; }
|
||||
input{ flex:1; padding:12px 14px; border-radius:12px; border:1px solid rgba(232,238,247,0.14); background: rgba(0,0,0,0.25); color:var(--fg); font-size:16px; }
|
||||
button{ padding:12px 14px; border-radius:12px; border:1px solid rgba(232,238,247,0.14); background: rgba(125,211,252,0.14); color:var(--fg); font-size:16px; cursor:pointer; }
|
||||
.hint{ color: rgba(232,238,247,0.65); font-size: 13px; margin-top: 10px; }
|
||||
.error{ color:#fca5a5; margin-top:10px; display:none; }
|
||||
img{ height:22px; opacity:0.9; }
|
||||
.brand{ display:flex; align-items:center; gap:10px; margin-bottom:10px; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="card">
|
||||
<div class="brand">
|
||||
<img src="/Media/Atomaste_light_grey_Logo.svg" alt="Atomaste" />
|
||||
<div style="font-weight:600">CDR Deck Access</div>
|
||||
</div>
|
||||
<div style="font-size: 14px; color: rgba(232,238,247,0.75)">Enter the access code to open the presentation.</div>
|
||||
|
||||
<div class="row">
|
||||
<input id="code" type="password" placeholder="Access code" autocomplete="off" />
|
||||
<button id="go">Open</button>
|
||||
</div>
|
||||
|
||||
<div class="error" id="err">Incorrect code.</div>
|
||||
<div class="hint">Note: this is a lightweight gate (link + code), not strong security.</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// NOTE: This is intentionally simple. Not real security.
|
||||
// Change the CODE value before sharing.
|
||||
const CODE = 'stratosphere';
|
||||
|
||||
const $ = (id) => document.getElementById(id);
|
||||
const go = () => {
|
||||
const val = $('code').value.trim();
|
||||
if (val === CODE) {
|
||||
// Lightweight gate: store a marker then redirect.
|
||||
try { localStorage.setItem('atomaste_deck_gof_cdr', CODE); } catch (e) {}
|
||||
window.location.href = './index.html';
|
||||
} else {
|
||||
$('err').style.display = 'block';
|
||||
}
|
||||
};
|
||||
|
||||
$('go').addEventListener('click', go);
|
||||
$('code').addEventListener('keydown', (e) => { if (e.key === 'Enter') go(); });
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
408
decks/gigabit-optique-fullum-cdr/index.html
Normal file
408
decks/gigabit-optique-fullum-cdr/index.html
Normal file
@@ -0,0 +1,408 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>CDR — GigaBIT M1 Mirror | Atomaste</title>
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
|
||||
<!-- Reveal.js (CDN) -->
|
||||
<link rel="stylesheet" href="https://unpkg.com/reveal.js@5/dist/reveal.css" />
|
||||
<link rel="stylesheet" href="https://unpkg.com/reveal.js@5/dist/theme/black.css" />
|
||||
<link rel="stylesheet" href="./theme-atomaste.css" />
|
||||
|
||||
<link rel="icon" type="image/svg+xml" href="/Media/Atomaste_logo_A.svg?v=2">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="reveal">
|
||||
<div class="slides">
|
||||
|
||||
<!-- 1 Title -->
|
||||
<section>
|
||||
<h1>Critical Design Review (CDR)</h1>
|
||||
<h2>GigaBIT M1 Primary Mirror</h2>
|
||||
<p style="color: rgba(232,238,247,0.75)">Optique Fullum · Atomaste · <span id="today"></span></p>
|
||||
<aside class="notes">
|
||||
Goal: establish confidence to proceed with Schott blank order.
|
||||
Audience: StarSpec.
|
||||
Keep intro short: what decision we’re asking for.
|
||||
</aside>
|
||||
</section>
|
||||
|
||||
<!-- 2 Agenda -->
|
||||
<section>
|
||||
<h2>Agenda</h2>
|
||||
<ul>
|
||||
<li class="fragment fade-up">Executive summary (decision + numbers)</li>
|
||||
<li class="fragment fade-up">Design evolution (PDR → CDR)</li>
|
||||
<li class="fragment fade-up">Selected design baseline (Option B)</li>
|
||||
<li class="fragment fade-up">Performance validation (WFE + margins)</li>
|
||||
<li class="fragment fade-up">Support system (whiffletree + lateral)</li>
|
||||
<li class="fragment fade-up">Reference frame & boundary condition strategy</li>
|
||||
<li class="fragment fade-up">Risks, schedule, next steps</li>
|
||||
</ul>
|
||||
<aside class="notes">Target: ~45 min including questions. Main deck ~24–26 slides + backup.</aside>
|
||||
</section>
|
||||
|
||||
<!-- 3 Exec summary -->
|
||||
<section>
|
||||
<h2>Executive Summary</h2>
|
||||
<ul>
|
||||
<li class="fragment fade-up"><b>Status:</b> design maturity sufficient to authorize blank procurement</li>
|
||||
<li class="fragment fade-up"><b>Baseline for procurement:</b> Option B (Conical V14)</li>
|
||||
<li class="fragment fade-up"><b>Performance:</b> WFE compliant with 36–71% margin</li>
|
||||
<li class="fragment fade-up"><b>Mass:</b> ~95 kg (allocation 103.5 kg)</li>
|
||||
<li class="fragment fade-up"><b>Cost:</b> $525k quote (0.4% above $523k target)</li>
|
||||
<li class="fragment fade-up"><b>Schedule driver:</b> 18‑week Schott lead time</li>
|
||||
</ul>
|
||||
<aside class="notes">This slide is the meeting anchor: decision + evidence plan.</aside>
|
||||
</section>
|
||||
|
||||
<!-- 4 Key numbers -->
|
||||
<section>
|
||||
<h2>Key Numbers (Option B)</h2>
|
||||
<ul>
|
||||
<li class="fragment fade-up"><b>WFE 40°–20°:</b> 6.59 nm RMS (req ≤ 22 nm)</li>
|
||||
<li class="fragment fade-up"><b>WFE 60°–20°:</b> 14.79 nm RMS (req ≤ 22 nm)</li>
|
||||
<li class="fragment fade-up"><b>Req interpretation:</b> 22 nm RMS ≈ λ/25 @ 550 nm</li>
|
||||
<li class="fragment fade-up"><b>Mass:</b> ~95 kg (Δ = +8% margin to allocation)</li>
|
||||
<li class="fragment fade-up"><b>Quote:</b> $525,000 (received)</li>
|
||||
</ul>
|
||||
<aside class="notes">Call out margin: even with uncertainty, we remain well inside requirement.</aside>
|
||||
</section>
|
||||
|
||||
<!-- Divider -->
|
||||
<section>
|
||||
<div class="section-divider">
|
||||
<div class="kicker">Section</div>
|
||||
<div class="title">Design Evolution (PDR → CDR)</div>
|
||||
<div style="color: rgba(232,238,247,0.7)">Method improvements + scale of validation.</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 5 Transition to Atomizer -->
|
||||
<section>
|
||||
<h2>Transition to Atomizer Framework</h2>
|
||||
<ul>
|
||||
<li class="fragment fade-up">Moved from HEEDS MDO → <b>custom Atomizer</b> framework</li>
|
||||
<li class="fragment fade-up">Full control of algorithms, tuning, and traceability</li>
|
||||
<li class="fragment fade-up">Automation: NX Nastran (SOL 101) + post-processing</li>
|
||||
<li class="fragment fade-up">Reproducible studies (version-controlled)</li>
|
||||
</ul>
|
||||
<aside class="notes">Atomizer is the engine behind the scale + reproducibility of this campaign.</aside>
|
||||
</section>
|
||||
|
||||
<!-- 6 OPD Zernike -->
|
||||
<section>
|
||||
<h2>OPD‑Based Zernike Method (Upgrade)</h2>
|
||||
<ul>
|
||||
<li class="fragment fade-up">Upgraded from Z‑displacement only → <b>OPD‑based</b> extraction</li>
|
||||
<li class="fragment fade-up">Captures lateral displacement (X,Y), not only axial (Z)</li>
|
||||
<li class="fragment fade-up">Directly supports the system WFE metric</li>
|
||||
</ul>
|
||||
<aside class="notes">Key: more correct optical metric than Z-only, especially off-zenith.</aside>
|
||||
</section>
|
||||
|
||||
<!-- 7 Campaign scale -->
|
||||
<section>
|
||||
<h2>Validation Scale</h2>
|
||||
<ul>
|
||||
<li class="fragment fade-up"><b>Total:</b> 3,770+ FEA simulations</li>
|
||||
<li class="fragment fade-up">14 design variables (support + ribs + blank geometry)</li>
|
||||
<li class="fragment fade-up">Algorithms: TPE, GNN, SAT v3, NSGA‑II, L‑BFGS</li>
|
||||
<li class="fragment fade-up"><b>Convergence confirmed:</b> multiple algorithms agree</li>
|
||||
</ul>
|
||||
<aside class="notes">This closes the “what if we optimize more?” question: diminishing returns.</aside>
|
||||
</section>
|
||||
|
||||
<!-- Divider -->
|
||||
<section>
|
||||
<div class="section-divider">
|
||||
<div class="kicker">Section</div>
|
||||
<div class="title">Cost Reduction Campaign</div>
|
||||
<div style="color: rgba(232,238,247,0.7)">Manufacturing simplifications without sacrificing performance.</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 8 Cost target -->
|
||||
<section>
|
||||
<h2>Cost Target & Outcome</h2>
|
||||
<ul>
|
||||
<li class="fragment fade-up">Baseline quote: <b>$625k</b></li>
|
||||
<li class="fragment fade-up">Budget target: <b>$523k</b></li>
|
||||
<li class="fragment fade-up">Option B quote: <b>$525k</b> (0.4% above target)</li>
|
||||
<li class="fragment fade-up">Option C explored for manufacturability context (not procurement baseline)</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<!-- 9 Simplifications -->
|
||||
<section>
|
||||
<h2>Key Simplifications (Implemented in Option B)</h2>
|
||||
<ul>
|
||||
<li class="fragment fade-up">Support interface taper simplified to 0° (cylindrical)</li>
|
||||
<li class="fragment fade-up">Center mini ribs removed (validated low sensitivity)</li>
|
||||
<li class="fragment fade-up">Guided by sensitivity + campaign data (not one-off changes)</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<!-- Divider -->
|
||||
<section>
|
||||
<div class="section-divider">
|
||||
<div class="kicker">Section</div>
|
||||
<div class="title">Selected Design Baseline</div>
|
||||
<div style="color: rgba(232,238,247,0.7)">Option B (Conical V14) for procurement.</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 10 Option B description -->
|
||||
<section>
|
||||
<h2>Option B (Baseline): Conical V14</h2>
|
||||
<ul>
|
||||
<li class="fragment fade-up"><b>Backface angle:</b> 4.3° (optimized)</li>
|
||||
<li class="fragment fade-up"><b>Center thickness:</b> 85 mm</li>
|
||||
<li class="fragment fade-up"><b>Mass:</b> ~95 kg</li>
|
||||
<li class="fragment fade-up"><b>Quote:</b> $525k received</li>
|
||||
</ul>
|
||||
<p style="color: rgba(232,238,247,0.7)"><i>Figure placeholder:</i> blank cross‑section export (CAD)</p>
|
||||
<aside class="notes">Add CAD cross-section image when available.</aside>
|
||||
</section>
|
||||
|
||||
<!-- 11 Trade summary -->
|
||||
<section>
|
||||
<h2>Why Option B (vs Flat‑Back Option C)</h2>
|
||||
<ul>
|
||||
<li class="fragment fade-up">Option C has excellent polishing metric (MFG 90 ~28 nm) and slightly better WFE</li>
|
||||
<li class="fragment fade-up">Option B selected for <b>maturity + procurement readiness</b> (quote in hand, heritage)</li>
|
||||
<li class="fragment fade-up">Option C remains documented as a credible alternative for future trades</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<!-- Divider -->
|
||||
<section>
|
||||
<div class="section-divider">
|
||||
<div class="kicker">Section</div>
|
||||
<div class="title">Performance Validation</div>
|
||||
<div style="color: rgba(232,238,247,0.7)">WFE compliance, dominant modes, uncertainty.</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 12 WFE compliance -->
|
||||
<section>
|
||||
<h2>WFE Compliance (Operational)</h2>
|
||||
<ul>
|
||||
<li class="fragment fade-up">Requirement: <b>≤ 22 nm RMS</b> (relative to 20° reference)</li>
|
||||
<li class="fragment fade-up">40°: <b>6.59 nm</b> (≈71% margin)</li>
|
||||
<li class="fragment fade-up">60°: <b>14.79 nm</b> (≈36% margin)</li>
|
||||
</ul>
|
||||
<aside class="notes">Call out that requirement corresponds to λ/25 @ 550 nm, system-level spec.</aside>
|
||||
</section>
|
||||
|
||||
<!-- 13 Zernike breakdown -->
|
||||
<section>
|
||||
<h2>WFE Breakdown (40° Case, Filtered RMS)</h2>
|
||||
<ul>
|
||||
<li class="fragment fade-up">Dominant: <b>Coma (J7–J8)</b> ~60%</li>
|
||||
<li class="fragment fade-up">Astigmatism (J5–J6) ~33%</li>
|
||||
<li class="fragment fade-up">Higher order contribution is low</li>
|
||||
</ul>
|
||||
<aside class="notes">Message: deformation is physically reasonable (gravity asymmetry); nothing pathological.</aside>
|
||||
</section>
|
||||
|
||||
<!-- 14 Uncertainty -->
|
||||
<section>
|
||||
<h2>Uncertainty (RSS)</h2>
|
||||
<ul>
|
||||
<li class="fragment fade-up">Combined WFE uncertainty estimate: <b>±1.2 nm</b></li>
|
||||
<li class="fragment fade-up">Worst-case 40°: ~7.5 nm (still far below 22 nm)</li>
|
||||
<li class="fragment fade-up">Support compliance target: reference frame deflection < 1 μm</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<!-- Divider -->
|
||||
<section>
|
||||
<div class="section-divider">
|
||||
<div class="kicker">Section</div>
|
||||
<div class="title">Support System</div>
|
||||
<div style="color: rgba(232,238,247,0.7)">Architecture is defined; detailed design proceeds to FDR.</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 15 Whiffletree -->
|
||||
<section>
|
||||
<h2>Axial Support: 54‑Point Whiffletree</h2>
|
||||
<ul>
|
||||
<li class="fragment fade-up">Self‑equalizing hierarchical linkage (18 pads × 3 assemblies)</li>
|
||||
<li class="fragment fade-up">Load path: Mirror → pads → arms → 3 interface points → reference frame</li>
|
||||
<li class="fragment fade-up">RDOF joints provide thermal decoupling (insensitive in 100–200 Nmm range)</li>
|
||||
</ul>
|
||||
<p style="color: rgba(232,238,247,0.7)"><i>Figure placeholder:</i> whiffletree schematic</p>
|
||||
</section>
|
||||
|
||||
<!-- 16 Lateral -->
|
||||
<section>
|
||||
<h2>Lateral Support (3‑Point)</h2>
|
||||
<ul>
|
||||
<li class="fragment fade-up">3 assemblies at 120°; determinate restraint</li>
|
||||
<li class="fragment fade-up">Includes spherical bearing (moment isolation) + radial slide (thermal) + Z stage (collimation)</li>
|
||||
<li class="fragment fade-up">At 20° elevation, each point carries ~35 kg lateral load (order of magnitude)</li>
|
||||
</ul>
|
||||
<p style="color: rgba(232,238,247,0.7)"><i>Figure placeholder:</i> lateral support concept</p>
|
||||
</section>
|
||||
|
||||
<!-- Divider -->
|
||||
<section>
|
||||
<div class="section-divider">
|
||||
<div class="kicker">Section</div>
|
||||
<div class="title">Reference Frame & Boundary Conditions</div>
|
||||
<div style="color: rgba(232,238,247,0.7)">Procure now; develop frame in parallel.</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 17 Reference frame scope -->
|
||||
<section>
|
||||
<h2>Reference Frame (Scope Boundary)</h2>
|
||||
<ul>
|
||||
<li class="fragment fade-up">Purpose: replicate fixed BCs used in optimization (stiff interface)</li>
|
||||
<li class="fragment fade-up">Status at CDR: <b>conceptual</b>; detailed design at FDR</li>
|
||||
<li class="fragment fade-up">Integration risk handled via ICD with StarSpec</li>
|
||||
</ul>
|
||||
<p style="color: rgba(232,238,247,0.7)"><i>Figure placeholder:</i> reference frame concept topology</p>
|
||||
</section>
|
||||
|
||||
<!-- 18 BC strategy -->
|
||||
<section>
|
||||
<h2>Why Ordering the Blank Now Is Safe</h2>
|
||||
<ul>
|
||||
<li class="fragment fade-up"><b>Diminishing returns:</b> 3,770+ trials; improvements are flat</li>
|
||||
<li class="fragment fade-up"><b>Separate problems:</b> mirror optimization vs frame stiffness engineering</li>
|
||||
<li class="fragment fade-up"><b>Parallel path:</b> order blank now, design/validate frame while Schott fabricates</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<!-- Divider -->
|
||||
<section>
|
||||
<div class="section-divider">
|
||||
<div class="kicker">Section</div>
|
||||
<div class="title">Risks, Schedule, Next Steps</div>
|
||||
<div style="color: rgba(232,238,247,0.7)">Residual risks are known and manageable.</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 19 Risk matrix -->
|
||||
<section>
|
||||
<h2>Risk Snapshot (CDR)</h2>
|
||||
<ul>
|
||||
<li class="fragment fade-up">Closed: design convergence (R1), mass allocation (R5), major methodology risks</li>
|
||||
<li class="fragment fade-up">Reduced: cost (R2), polishing difficulty (R6)</li>
|
||||
<li class="fragment fade-up">Open: Schott delivery delay (R3), interfaces (R7), material defect (R8)</li>
|
||||
<li class="fragment fade-up">New: reference frame stiffness (R4) — mitigated via parallel development</li>
|
||||
</ul>
|
||||
<aside class="notes">This slide is the “honest risks” moment. Keep it calm + mitigation-focused.</aside>
|
||||
</section>
|
||||
|
||||
<!-- 20 Schedule -->
|
||||
<section>
|
||||
<h2>Path to FDR (High Level)</h2>
|
||||
<ul>
|
||||
<li class="fragment fade-up">Schott PO: target Jan 20</li>
|
||||
<li class="fragment fade-up">Blank delivery: ~May 26 (18 weeks)</li>
|
||||
<li class="fragment fade-up">Reference frame concept review: Feb 28</li>
|
||||
<li class="fragment fade-up">Polishing start: Jun 2 → FDR: Sep</li>
|
||||
</ul>
|
||||
<aside class="notes">If you have a graphic timeline, swap this for the visual. Keep dates consistent with your doc.</aside>
|
||||
</section>
|
||||
|
||||
<!-- 21 Recommendation -->
|
||||
<section>
|
||||
<h2>Decision Request</h2>
|
||||
<ul>
|
||||
<li class="fragment fade-up"><b>Approve CDR baseline:</b> Option B (Conical V14)</li>
|
||||
<li class="fragment fade-up"><b>Authorize Schott blank order</b> (protect schedule)</li>
|
||||
<li class="fragment fade-up">Align on next steps: ICD + reference frame concept + support detailed design</li>
|
||||
</ul>
|
||||
<aside class="notes">Stop here; go to backup for Q&A.</aside>
|
||||
</section>
|
||||
|
||||
<!-- Backup marker -->
|
||||
<section>
|
||||
<div class="section-divider">
|
||||
<div class="kicker">Backup</div>
|
||||
<div class="title">Appendix</div>
|
||||
<div style="color: rgba(232,238,247,0.7)">Detailed tables, parameters, and trades.</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Backup: Option B Optimized Parameters (excerpt)</h2>
|
||||
<ul>
|
||||
<li>lateral_inner_angle 27.88°</li>
|
||||
<li>lateral_outer_angle 13.19°</li>
|
||||
<li>lateral_inner_pivot 7.41 mm</li>
|
||||
<li>lateral_outer_pivot 11.53 mm</li>
|
||||
<li>whiffle_min 58.90 mm</li>
|
||||
<li>blank_backface_angle 4.30°</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Backup: Requirement Matrix (excerpt)</h2>
|
||||
<ul>
|
||||
<li>REQ‑01 WFE 40°: 6.59 nm ≤ 22 nm ✓</li>
|
||||
<li>REQ‑01 WFE 60°: 14.79 nm ≤ 22 nm ✓</li>
|
||||
<li>REQ‑06 Mass: ~95 kg ≤ 103.5 kg ✓</li>
|
||||
<li>REQ‑09 Thermal/STOP: pending (FDR)</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="atomaste-footer">
|
||||
<div class="atomaste-chip">
|
||||
<img src="/Media/Atomaste_light_grey_Logo.svg" alt="Atomaste" />
|
||||
<span>CDR · GigaBIT M1 Mirror</span>
|
||||
</div>
|
||||
<div class="atomaste-chip"><span class="slide-number"></span></div>
|
||||
</div>
|
||||
|
||||
<script src="https://unpkg.com/reveal.js@5/dist/reveal.js"></script>
|
||||
<script>
|
||||
// Lightweight gate (not real security): require localStorage marker from enter.html
|
||||
try {
|
||||
const ok = localStorage.getItem('atomaste_deck_gof_cdr') === 'stratosphere';
|
||||
if (!ok) window.location.href = './enter.html';
|
||||
} catch (e) {
|
||||
window.location.href = './enter.html';
|
||||
}
|
||||
|
||||
document.getElementById('today').textContent = new Date().toLocaleDateString(undefined, {
|
||||
year: 'numeric', month: 'short', day: '2-digit'
|
||||
});
|
||||
|
||||
const deck = new Reveal({
|
||||
hash: true,
|
||||
transition: 'fade',
|
||||
backgroundTransition: 'fade',
|
||||
width: 1280,
|
||||
height: 720,
|
||||
margin: 0.08,
|
||||
controls: true,
|
||||
progress: true,
|
||||
center: false
|
||||
});
|
||||
|
||||
deck.initialize().then(() => {
|
||||
const updateNum = () => {
|
||||
const idx = deck.getIndices();
|
||||
const current = idx.h + 1;
|
||||
const total = deck.getTotalSlides();
|
||||
const el = document.querySelector('.slide-number');
|
||||
if (el) el.textContent = current + ' / ' + total;
|
||||
};
|
||||
deck.on('slidechanged', updateNum);
|
||||
updateNum();
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
131
decks/gigabit-optique-fullum-cdr/theme-atomaste.css
Normal file
131
decks/gigabit-optique-fullum-cdr/theme-atomaste.css
Normal file
@@ -0,0 +1,131 @@
|
||||
/* Atomaste Reveal.js theme (v1)
|
||||
Keep it minimal: reuse existing site look.
|
||||
*/
|
||||
|
||||
:root {
|
||||
--atomaste-bg: #0b0f14;
|
||||
--atomaste-fg: #e8eef7;
|
||||
--atomaste-muted: #a8b3c2;
|
||||
--atomaste-accent: #7dd3fc; /* light cyan */
|
||||
--atomaste-accent-2: #a78bfa; /* violet */
|
||||
}
|
||||
|
||||
.reveal {
|
||||
font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji";
|
||||
color: var(--atomaste-fg);
|
||||
}
|
||||
|
||||
.reveal .slides {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.reveal-viewport {
|
||||
background: radial-gradient(1200px 800px at 15% 10%, rgba(125,211,252,0.14), transparent 55%),
|
||||
radial-gradient(900px 600px at 85% 30%, rgba(167,139,250,0.12), transparent 60%),
|
||||
linear-gradient(180deg, #070a0f 0%, #0b0f14 100%);
|
||||
}
|
||||
|
||||
/* subtle moving sheen (keep it classy) */
|
||||
.reveal-viewport::before {
|
||||
content: "";
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
pointer-events: none;
|
||||
background:
|
||||
radial-gradient(500px 320px at 10% 20%, rgba(125,211,252,0.10), transparent 60%),
|
||||
radial-gradient(420px 280px at 90% 40%, rgba(167,139,250,0.08), transparent 62%),
|
||||
radial-gradient(520px 360px at 40% 95%, rgba(125,211,252,0.06), transparent 65%);
|
||||
filter: blur(0px);
|
||||
opacity: 0.9;
|
||||
transform: translate3d(0,0,0);
|
||||
animation: atomasteFloat 18s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@keyframes atomasteFloat {
|
||||
0% { transform: translate3d(0,0,0); }
|
||||
50% { transform: translate3d(18px,-10px,0); }
|
||||
100% { transform: translate3d(0,0,0); }
|
||||
}
|
||||
|
||||
.reveal h1, .reveal h2, .reveal h3 {
|
||||
letter-spacing: -0.02em;
|
||||
margin-bottom: 0.35em;
|
||||
}
|
||||
|
||||
.reveal h1 { font-size: 2.25em; }
|
||||
.reveal h2 { font-size: 1.65em; }
|
||||
.reveal h3 { font-size: 1.15em; color: var(--atomaste-muted); font-weight: 600; }
|
||||
|
||||
.reveal p, .reveal li {
|
||||
font-size: 0.95em;
|
||||
line-height: 1.35;
|
||||
}
|
||||
|
||||
.reveal a { color: var(--atomaste-accent); }
|
||||
|
||||
/* footer */
|
||||
.atomaste-footer {
|
||||
position: absolute;
|
||||
left: 36px;
|
||||
right: 36px;
|
||||
bottom: 22px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 16px;
|
||||
font-size: 14px;
|
||||
color: rgba(232,238,247,0.65);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.atomaste-footer img {
|
||||
height: 22px;
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
.atomaste-chip {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
padding: 6px 10px;
|
||||
border: 1px solid rgba(232,238,247,0.14);
|
||||
border-radius: 999px;
|
||||
background: rgba(255,255,255,0.03);
|
||||
}
|
||||
|
||||
/* nicer lists */
|
||||
.reveal ul { margin-left: 1.1em; }
|
||||
.reveal li { margin: 0.35em 0; }
|
||||
|
||||
/* images */
|
||||
.reveal img {
|
||||
max-height: 62vh;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
/* section divider style */
|
||||
.section-divider {
|
||||
display: grid;
|
||||
gap: 18px;
|
||||
}
|
||||
|
||||
.section-divider .kicker {
|
||||
font-size: 0.9em;
|
||||
color: var(--atomaste-muted);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.12em;
|
||||
}
|
||||
|
||||
.section-divider .title {
|
||||
font-size: 2.1em;
|
||||
line-height: 1.1;
|
||||
}
|
||||
|
||||
/* fragments */
|
||||
.reveal .fragment.fade-up { transform: translateY(6px); }
|
||||
|
||||
/* code blocks (if any) */
|
||||
.reveal pre code {
|
||||
font-size: 0.8em;
|
||||
line-height: 1.3;
|
||||
}
|
||||
Reference in New Issue
Block a user