@font-face{font-family:OFCCairo;src:url('fonts/Cairo-Regular.ttf') format('truetype');font-weight:400;font-display:swap}
@font-face{font-family:OFCCairo;src:url('fonts/Cairo-Bold.ttf') format('truetype');font-weight:700 900;font-display:swap}
/* Fixed A4 artboard, shared without rewriting between thumbnails, preview and print. */
.ofc-cover{--cover-text:#182c3b;--cover-title-size:49px;position:relative!important;display:block!important;width:210mm!important;height:297mm!important;min-width:210mm!important;box-sizing:border-box!important;margin:0!important;overflow:hidden;background:#fff!important;color:var(--cover-text)!important;font:400 18px/1.65 OFCCairo,Arial,sans-serif!important;isolation:isolate;text-align:center;flex:none}
.ofc-cover *{box-sizing:border-box}.ofc-cover [lang=fr]{font-family:OFCCairo,Arial,sans-serif;line-height:1.45}
.ofc-cover .ofc-art{position:absolute;inset:0;overflow:hidden;z-index:-1;pointer-events:none}.ofc-cover .ofc-shape{position:absolute;display:block}.ofc-cover .ofc-cover-head{position:absolute;top:70px;inset-inline:74px;display:flex;align-items:center;gap:22px;min-height:90px}
.ofc-cover .ofc-logo{display:block;width:88px;height:88px;object-fit:contain;flex:none}.ofc-cover .ofc-admin{flex:1;min-width:0}.ofc-cover .ofc-admin .ofc-info-row{margin:0 0 10px}.ofc-cover .ofc-admin .ofc-info-label{font-size:12px}.ofc-cover .ofc-admin strong{font-size:17px;font-weight:400}
.ofc-cover .ofc-title-block{position:absolute;top:330px;inset-inline:80px;height:240px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:18px;color:var(--cover-primary)}
.ofc-cover .ofc-cover-title{font-size:var(--cover-title-size);line-height:1.6;font-weight:800;overflow-wrap:anywhere;max-width:100%;margin:0;flex-shrink:0}.ofc-cover .ofc-cover-title[lang=fr]{font-size:calc(var(--cover-title-size)*.92);font-weight:700;line-height:1.25}
.ofc-cover.ofc-bilingual .ofc-cover-title{font-size:calc(var(--cover-title-size)*.76)}.ofc-cover.ofc-bilingual .ofc-cover-title[lang=fr]{font-size:calc(var(--cover-title-size)*.64)}
.ofc-cover .ofc-title-rule{display:block;width:58px;height:3px;background:var(--cover-accent);flex:none}.ofc-cover .ofc-cover-info{position:absolute;top:660px;inset-inline:90px;max-height:300px}.ofc-cover .ofc-info-row{display:flex;gap:22px;margin:0 0 22px;align-items:start;justify-content:center}.ofc-cover .ofc-info-cell{flex:1;min-width:0;overflow-wrap:anywhere}.ofc-cover .ofc-info-label{display:block;color:var(--cover-primary);font-size:14px;margin-bottom:4px}.ofc-cover .ofc-info-cell strong{font-size:21px;font-weight:700;display:block;line-height:1.65}.ofc-cover .ofc-info-cell[lang=fr] strong{line-height:1.45;font-size:20px}
.ofc-cover .ofc-cover-foot{position:absolute;bottom:62px;inset-inline:74px}.ofc-cover .ofc-year{display:flex;justify-content:center;align-items:center;gap:22px;font-size:14px}.ofc-cover .ofc-year strong{font-size:20px;letter-spacing:1px;white-space:nowrap}.ofc-cover .ofc-year-separator{margin-inline:6px}
/* 01 Waves: flowing bands, centered open composition. */
.cover-template--waves .ofc-shape-a{width:1100px;height:290px;background:var(--cover-primary);border-radius:0 0 55% 45%;top:-120px;left:-90px;transform:rotate(-9deg)}
.cover-template--waves .ofc-shape-b{width:1000px;height:210px;background:linear-gradient(110deg,var(--cover-accent),var(--cover-primary));border-radius:55% 45% 0 0;bottom:-120px;left:-70px;transform:rotate(-7deg)}
.cover-template--waves .ofc-shape-c{width:950px;height:180px;top:-55px;left:-70px;transform:rotate(-14deg);border-radius:0 0 50% 50%;border-bottom:15px solid var(--cover-accent)}
.cover-template--waves .ofc-cover-head{top:235px}.cover-template--waves .ofc-title-block{top:385px}.cover-template--waves .ofc-cover-info{border-top:1px solid var(--cover-soft);padding-top:28px}.cover-template--waves .ofc-cover-foot{bottom:120px}
/* 02 Geometry: asymmetric corner diamonds with a precision partial frame. */
.cover-template--geometry .ofc-shape-a{width:230px;height:230px;background:var(--cover-primary);transform:rotate(45deg);left:-140px;top:-140px}
.cover-template--geometry .ofc-shape-b{width:280px;height:280px;border:3px solid var(--cover-accent);transform:rotate(45deg);right:-160px;bottom:-130px}
.cover-template--geometry .ofc-shape-c{inset:35px;border:1px solid var(--cover-accent);border-inline-end:0;border-bottom:0}
.cover-template--geometry .ofc-shape-d{height:140px;width:140px;background:var(--cover-soft);transform:rotate(45deg);left:-100px;bottom:140px}
.cover-template--geometry .ofc-title-block{inset-inline:110px;top:315px;height:270px;border:1px solid var(--cover-accent);padding:30px}.cover-template--geometry .ofc-title-rule{display:none}.cover-template--geometry .ofc-cover-info{top:665px}
/* 03 Moroccan: original eight-point repeat, restrained border and central medallion. */
.cover-template--moroccan .ofc-mosaic{position:absolute;top:0;left:0;width:100%;height:130px;color:var(--cover-primary);opacity:.65}
.cover-template--moroccan .ofc-shape-a{inset:28px;border:1px solid var(--cover-accent)}.cover-template--moroccan .ofc-shape-b{top:130px;inset-inline:55px;height:4px;background:var(--cover-primary)}
.cover-template--moroccan .ofc-shape-c{bottom:28px;inset-inline:28px;height:16px;background:var(--cover-primary)}
.cover-template--moroccan .ofc-cover-head{top:180px}.cover-template--moroccan .ofc-title-block{top:335px;height:260px;background:var(--cover-soft);clip-path:polygon(6% 0,94% 0,100% 14%,100% 86%,94% 100%,6% 100%,0 86%,0 14%);padding:30px}
/* 04 Minimal: economical side rail, asymmetric title and bottom information block. */
.cover-template--minimal .ofc-shape-a{inset-block:0;inset-inline-start:0;width:24px;background:var(--cover-primary)}.cover-template--minimal .ofc-shape-b{top:285px;inset-inline-start:74px;width:75px;height:9px;background:var(--cover-accent)}
.cover-template--minimal .ofc-title-block{top:350px;height:240px;align-items:start;text-align:start}.cover-template--minimal .ofc-title-rule{display:none}.cover-template--minimal .ofc-cover-info{top:720px;text-align:start;border-top:1px solid #dce1e6;padding-top:28px}.cover-template--minimal .ofc-info-row{justify-content:start;margin-bottom:18px}.cover-template--minimal .ofc-year{justify-content:start}.cover-template--minimal .ofc-cover-head{text-align:start}
/* 05 Creative: large open arcs and a small vector book illustration. */
.cover-template--creative .ofc-shape-a{width:540px;height:540px;border:65px solid var(--cover-soft);border-radius:50%;top:-310px;left:-180px}
.cover-template--creative .ofc-shape-b{width:310px;height:310px;border:32px solid var(--cover-accent);border-radius:50%;right:-230px;bottom:190px}
.cover-template--creative .ofc-shape-c{width:150px;height:150px;border-radius:50%;background:var(--cover-primary);bottom:-95px;left:100px}
.cover-template--creative .ofc-education-mark{position:absolute;width:82px;height:82px;top:290px;left:calc(50% - 41px);color:var(--cover-primary)}
.cover-template--creative .ofc-title-block{top:390px;height:220px}.cover-template--creative .ofc-cover-info{top:690px}
/* 06 Academic: double rule, administrative masthead and burgundy title plaque. */
.cover-template--academic .ofc-shape-a{inset:28px;border:3px solid var(--cover-primary)}.cover-template--academic .ofc-shape-b{inset:37px;border:1px solid var(--cover-accent)}
.cover-template--academic .ofc-cover-head{top:90px;padding-bottom:26px;border-bottom:1px solid var(--cover-accent)}
.cover-template--academic .ofc-title-block{top:350px;height:240px;inset-inline:100px;border-block:2px solid var(--cover-accent);background:var(--cover-soft);padding:25px;color:var(--cover-accent)}.cover-template--academic .ofc-title-rule{display:none}.cover-template--academic .ofc-cover-foot{bottom:85px;border-top:1px solid var(--cover-accent);padding-top:20px}
/* 07 Diagonal: slanted header blocks and contrasting year footer. */
.cover-template--diagonal .ofc-shape-a{top:0;left:0;width:100%;height:180px;background:var(--cover-primary);clip-path:polygon(0 0,100% 0,100% 35%,0 100%)}
.cover-template--diagonal .ofc-shape-b{top:120px;left:0;width:100%;height:50px;background:var(--cover-accent);clip-path:polygon(0 60%,100% 0,100% 40%,0 100%)}
.cover-template--diagonal .ofc-shape-c{bottom:0;left:0;width:100%;height:105px;background:var(--cover-primary)}
.cover-template--diagonal .ofc-cover-head{top:215px}.cover-template--diagonal .ofc-title-block{top:395px;height:240px;text-align:start;align-items:start;inset-inline:90px}.cover-template--diagonal .ofc-title-rule:last-child{display:none}.cover-template--diagonal .ofc-cover-info{top:720px;text-align:start}.cover-template--diagonal .ofc-cover-foot{bottom:32px;color:#fff}
/* 08 Editorial: tinted folio, oversized left/right editorial alignment and column rules. */
.cover-template--editorial{--cover-title-size:55px;background:var(--cover-soft)!important}.cover-template--editorial .ofc-shape-a{top:0;inset-inline-end:0;height:100%;width:46px;background:var(--cover-primary)}
.cover-template--editorial .ofc-shape-b{inset-inline-start:74px;top:310px;width:90px;height:9px;background:var(--cover-accent)}
.cover-template--editorial .ofc-cover-head{text-align:start;top:80px;padding-bottom:30px;border-bottom:1px solid var(--cover-primary)}
.cover-template--editorial .ofc-title-block{top:370px;height:270px;align-items:start;text-align:start;inset-inline:74px 90px}.cover-template--editorial .ofc-title-rule{display:none}
.cover-template--editorial .ofc-cover-info{top:750px;inset-inline:74px 90px;text-align:start;border-inline-start:3px solid var(--cover-accent);padding-inline-start:22px}.cover-template--editorial .ofc-info-row{margin-bottom:16px}.cover-template--editorial .ofc-cover-foot{bottom:55px;border-top:1px solid var(--cover-primary);padding-top:16px}.cover-template--editorial .ofc-year{justify-content:space-between}
.ofc-print-body{margin:0!important;padding:0!important;background:#fff!important;min-width:0!important}
@page{size:A4 portrait;margin:0}
@media print{.ofc-print-body .ofc-cover{print-color-adjust:exact!important;-webkit-print-color-adjust:exact!important;break-inside:avoid;page-break-inside:avoid;transform:none!important;box-shadow:none!important}.ofc-print-help{display:none!important}}
