.ribbon { width: 150px; height: 150px; overflow: hidden; position: absolute; &::before, &::after { position: absolute; z-index: -1; content: ''; display: block; border: 5px solid #2980b9; } & span { z-index: 1; position: absolute; display: grid; align-items: center; width: 225px; height: 48px; padding: 0 44px; box-shadow: 0 5px 10px rgba(0, 0, 0, .1); color: #fff; font: 700 18px/1 'Lato', sans-serif; text-shadow: 0 1px 1px rgba(0, 0, 0, .2); text-transform: uppercase; text-align: center; overflow: hidden; user-select: none; &.o_small { font-size: 12px; } &.o_medium { font-size: 15px; } } &-top-right { margin-top: -$o-sheet-vpadding; right: 0; &::before, &::after { border-top-color: black; border-right-color: black; } &::before { top: 0; left: 0; } &::after { bottom: 0; right: 0; } & span { left: -15px; top: 30px; transform: rotate(45deg); } } } // after ribbon widget there can be field widgets or oe_title which may // have widgets on right end, add margin-right so ribbon not overlap on it .ribbon { &:not(.o_invisible_modifier) { ~ .oe_title, ~ .o_field_widget { margin-right: 100px; } } }