html {
height: 100%;
}
body {
font-family: 'Helvetica Neue', Verdana, Helvetica, Arial, sans-serif;
max-width: 600px;
margin: 0;
height: 100%;
overflow: hidden;
-webkit-font-smoothing: antialiased;
font-size: 1.125em;
color: #333;
line-height: 1.5em;
}
#app {
height: 100%;
display: flex;
flex-direction: column;
overflow: hidden;
}
#main-layout {
flex: 1;
display: flex;
flex-direction: column;
min-height: 0;
}
.sheet-container {
flex: 1;
overflow: auto;
min-height: 0;
padding-bottom: 44px;
}
h1, h2, h3 {
color: #000;
}
h1 {
font-size: 2.5em
}
h2 {
font-size: 2em
}
h3 {
font-size: 1.5em
}
a {
text-decoration: none;
color: #09f;
}
a:hover {
text-decoration: underline;
}
#main-table {
/*position: fixed;
top: 0;
left: 0;*/
}
table {
border-collapse: collapse;
}
td, th {
border: 1px solid black;
padding: 0;
}
th {
text-align: center;
min-width: 40px;
}
td {
text-align: right;
position: relative;
}
td input.highlighted {
background-color: lightblue;
}
td input {
border: none;
padding: 5px;
width: 80px;
}
td input:hover {
background-color: #ccc;
}
td input:focus {
background-color: #ccf;
}
td input:not(:focus) {
text-align: right;
}
/* ── Control bar ── */
#control-bar {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 44px;
display: flex;
align-items: center;
background: #f5f5f5;
border-top: 1px solid #ccc;
z-index: 999;
}
#bar-logo {
height: 44px;
width: 44px;
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: center;
border-right: 1px solid #ccc;
}
#bar-logo img {
width: 100%;
height: 100%;
}
.bar-btn {
height: 100%;
padding: 0 16px;
border: none;
border-right: 1px solid #ccc;
background: none;
cursor: pointer;
font-size: 0.9em;
color: #333;
}
.bar-btn:hover {
background: #e8e8e8;
}
/* ── About modal ── */
#about-modal-overlay {
position: fixed;
inset: 0;
background: rgba(0, 0, 0, 0.45);
z-index: 1000;
display: flex;
align-items: center;
justify-content: center;
padding: 16px;
}
#about-modal {
background: white;
border-radius: 8px;
padding: 24px;
max-width: 480px;
width: 100%;
max-height: 80vh;
overflow-y: auto;
box-shadow: 0 4px 24px rgba(0,0,0,0.2);
}
#about-modal button {
margin-top: 12px;
padding: 8px 20px;
border: 1px solid #ccc;
border-radius: 4px;
background: #f5f5f5;
cursor: pointer;
}
#about-modal button:hover {
background: #e0e0e0;
}
.smartborder {
width: calc(100% + 2px);
height: calc(100% + 2px);
border: 3px solid blue;
position: absolute;
left: -4px;
top: -4px;
background: none;
z-index: 999;
/*pointer-events: none;*/
}
td input:not(:focus) + .smartborder {
visibility: hidden;
}
.smartborder .button {
--button-size: 20px;
--half-button-size: 10px;
/*pointer-events: all;/* TODO check this (what is "initial"?) */
width: var(--button-size);
height: var(--button-size);
background-color: blue;
color: white;
border-radius: var(--half-button-size);
position: absolute;
}
.extendrange.button {
left: 100%;
top: 100%;
}
.fillrange.button {
top: 100%;
left: calc(50% - var(--half-button-size));
}
.moverange.button {
top: calc(50% - var(--half-button-size));
left: calc(0px - var(--button-size));
}
.emptyrange.button {
top: calc(0px - var(--button-size));
left: calc(100% - var(--button-size) - 5px);
}
.deleterange.button {
top: calc(0px - var(--button-size));
left: 100%;
}
.copyrange.button {
top: calc(0px - var(--button-size));
left: 0;
}