MediaWiki:Gadget-AerofoilDesigner.css: Difference between revisions

From Aodhán Gallagher
Created blank page
 
No edit summary
Line 1: Line 1:
/* Interactive Bezier aerofoil designer */
#aerofoil-tool {
    width: 100%;
    max-width: 1200px;
    margin: 1rem 0;
    font-size: 0.95rem;
}


.aerofoil-controls {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(360px, 1fr));
    gap: 0.55rem 1rem;
    margin-bottom: 0.8rem;
}
.aerofoil-control {
    display: grid;
    grid-template-columns: 150px minmax(120px, 1fr) 84px 68px;
    align-items: center;
    gap: 0.55rem;
}
.aerofoil-control-label {
    font-weight: 600;
}
.aerofoil-control input[type='range'] {
    width: 100%;
}
.aerofoil-number {
    width: 100%;
    box-sizing: border-box;
}
.aerofoil-value {
    text-align: right;
    font-variant-numeric: tabular-nums;
    color: #54595d;
}
.aerofoil-actions {
    display: flex;
    justify-content: flex-end;
    margin: 0.6rem 0;
}
.aerofoil-plot-wrap {
    width: 100%;
    overflow: hidden;
    border: 1px solid #a2a9b1;
    background: #fff;
}
.aerofoil-plot-wrap svg {
    display: block;
    width: 100%;
    height: auto;
}
.aerofoil-grid {
    stroke: #eaecf0;
    stroke-width: 1;
}
.aerofoil-axis {
    stroke: #72777d;
    stroke-width: 1.2;
}
.aerofoil-profile {
    fill: none;
    stroke: #202122;
    stroke-width: 1.8;
    stroke-linejoin: round;
    stroke-linecap: round;
}
.aerofoil-upper,
.aerofoil-lower {
    fill: none;
    stroke: #36c;
    stroke-width: 2.4;
    stroke-linejoin: round;
    stroke-linecap: round;
}
.aerofoil-camber {
    fill: none;
    stroke: #72777d;
    stroke-width: 1.3;
    stroke-dasharray: 6 5;
}
.aerofoil-tick,
.aerofoil-axis-label {
    fill: #54595d;
    font-size: 13px;
    font-family: sans-serif;
}
.aerofoil-empty {
    fill: #a2a9b1;
    font-size: 20px;
    font-family: sans-serif;
}
.aerofoil-status {
    margin-top: 0.7rem;
    padding: 0.6rem 0.8rem;
    border-left: 4px solid;
    font-weight: 700;
}
.aerofoil-status.is-valid {
    border-left-color: #14866d;
    background: #f1fff8;
}
.aerofoil-status.is-invalid {
    border-left-color: #b32424;
    background: #fff4f4;
}
.aerofoil-checks {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem 1rem;
    margin-top: 0.6rem;
    font-size: 0.9rem;
}
.aerofoil-checks .pass {
    color: #14866d;
}
.aerofoil-checks .fail {
    color: #b32424;
    font-weight: 700;
}
.aerofoil-note {
    margin-top: 0.7rem;
    color: #72777d;
    font-size: 0.85rem;
}
@media (max-width: 700px) {
    .aerofoil-controls {
        grid-template-columns: 1fr;
    }
    .aerofoil-control {
        grid-template-columns: 120px 1fr 78px;
    }
    .aerofoil-value {
        display: none;
    }
}

Revision as of 09:48, 23 September 2026

/* Interactive Bezier aerofoil designer */
#aerofoil-tool {
    width: 100%;
    max-width: 1200px;
    margin: 1rem 0;
    font-size: 0.95rem;
}

.aerofoil-controls {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(360px, 1fr));
    gap: 0.55rem 1rem;
    margin-bottom: 0.8rem;
}

.aerofoil-control {
    display: grid;
    grid-template-columns: 150px minmax(120px, 1fr) 84px 68px;
    align-items: center;
    gap: 0.55rem;
}

.aerofoil-control-label {
    font-weight: 600;
}

.aerofoil-control input[type='range'] {
    width: 100%;
}

.aerofoil-number {
    width: 100%;
    box-sizing: border-box;
}

.aerofoil-value {
    text-align: right;
    font-variant-numeric: tabular-nums;
    color: #54595d;
}

.aerofoil-actions {
    display: flex;
    justify-content: flex-end;
    margin: 0.6rem 0;
}

.aerofoil-plot-wrap {
    width: 100%;
    overflow: hidden;
    border: 1px solid #a2a9b1;
    background: #fff;
}

.aerofoil-plot-wrap svg {
    display: block;
    width: 100%;
    height: auto;
}

.aerofoil-grid {
    stroke: #eaecf0;
    stroke-width: 1;
}

.aerofoil-axis {
    stroke: #72777d;
    stroke-width: 1.2;
}

.aerofoil-profile {
    fill: none;
    stroke: #202122;
    stroke-width: 1.8;
    stroke-linejoin: round;
    stroke-linecap: round;
}

.aerofoil-upper,
.aerofoil-lower {
    fill: none;
    stroke: #36c;
    stroke-width: 2.4;
    stroke-linejoin: round;
    stroke-linecap: round;
}

.aerofoil-camber {
    fill: none;
    stroke: #72777d;
    stroke-width: 1.3;
    stroke-dasharray: 6 5;
}

.aerofoil-tick,
.aerofoil-axis-label {
    fill: #54595d;
    font-size: 13px;
    font-family: sans-serif;
}

.aerofoil-empty {
    fill: #a2a9b1;
    font-size: 20px;
    font-family: sans-serif;
}

.aerofoil-status {
    margin-top: 0.7rem;
    padding: 0.6rem 0.8rem;
    border-left: 4px solid;
    font-weight: 700;
}

.aerofoil-status.is-valid {
    border-left-color: #14866d;
    background: #f1fff8;
}

.aerofoil-status.is-invalid {
    border-left-color: #b32424;
    background: #fff4f4;
}

.aerofoil-checks {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem 1rem;
    margin-top: 0.6rem;
    font-size: 0.9rem;
}

.aerofoil-checks .pass {
    color: #14866d;
}

.aerofoil-checks .fail {
    color: #b32424;
    font-weight: 700;
}

.aerofoil-note {
    margin-top: 0.7rem;
    color: #72777d;
    font-size: 0.85rem;
}

@media (max-width: 700px) {
    .aerofoil-controls {
        grid-template-columns: 1fr;
    }

    .aerofoil-control {
        grid-template-columns: 120px 1fr 78px;
    }

    .aerofoil-value {
        display: none;
    }
}