メニュー・料金表|El sol(太田市のフェイシャル・リラクゼーション・アイラッシュ・ネイル)
\n' + newDoc;
}
async function doSave(){
try{
var artifact = await claude.use('artifact');
if(!artifact){
saveStatus = {ok:false, msg:'この環境では保存機能が使えません。'};
editMode = true; render();
return;
}
var html = buildFullHtml(DATA);
if(!html){
saveStatus = {ok:false, msg:'内部エラーで保存できませんでした。'};
editMode = true; render();
return;
}
var result = await artifact.publish(html);
if(result){
saveStatus = {ok:true};
} else {
saveStatus = {ok:false, msg:'保存に失敗しました(閲覧のみの可能性があります)。'};
}
}catch(err){
saveStatus = {ok:false, msg:'保存できませんでした(権限がない可能性があります)。'};
}
editMode = true;
render();
}
// ---------- MAIN RENDER ----------
function render(){
document.documentElement.classList.toggle('lt', !editMode);
document.documentElement.setAttribute('lang', LANG);
updateNav();
var page = document.getElementById('page');
page.innerHTML = '';
if(editMode){
renderEditMode(page);
} else {
renderReadOnly(page);
setupTitleFadeIn();
setupParallax();
setupCardBorders();
}
}
function setupTitleFadeIn(){
var titles = document.querySelectorAll('.anim-title');
if(!('IntersectionObserver' in window)){
titles.forEach(function(t){ t.classList.add('title-visible'); });
return;
}
var io = new IntersectionObserver(function(entries){
entries.forEach(function(entry){
if(entry.isIntersecting){
entry.target.classList.add('title-visible');
} else {
entry.target.classList.remove('title-visible');
}
});
}, {threshold:0.2});
titles.forEach(function(t){ io.observe(t); });
}
function setupCardBorders(){
var cards = document.querySelectorAll('.setmenu-rows .card, .setmenu-rows .combo-card');
if(!('IntersectionObserver' in window)){
cards.forEach(function(c){ c.classList.add('border-visible'); });
return;
}
var io2 = new IntersectionObserver(function(entries){
entries.forEach(function(entry){
if(entry.isIntersecting){
entry.target.classList.add('border-visible');
io2.unobserve(entry.target);
}
});
}, {threshold:0.15});
cards.forEach(function(c){ io2.observe(c); });
}
var parallaxSetup = false;
function setupParallax(){
if(parallaxSetup) return;
parallaxSetup = true;
function update(){
var offset = Math.max(-40, Math.min(40, window.scrollY * 0.04));
document.body.style.setProperty('--scroll-offset', offset + 'px');
}
window.addEventListener('scroll', update, {passive:true});
update();
}
initBar();
render();
})();